Быстрый старт разработки OrioleDB
Эта страница переведена при помощи нейросети GigaChat.
Данное руководство описывает процедуру сборки и запуска OrioleDB на локальной машине из исходного кода.
Linux
Установить зависимости
sudo apt-get update
sudo apt install git build-essential flex bison pkg-config libreadline-dev make gdb libipc-run-perl libicu-dev python3 python3-dev python3-pip python3-setuptools python3-testresources libzstd1 libzstd-dev valgrind libssl-dev libcurl4-openssl-dev wget
Скачать и установить PostgreSQL 17 с патчами
git clone https://github.com/orioledb/postgres.git --branch patches17 --single-branch postgres-patches17
cd postgres-patches17/
Выполнить checkout необходимого набора патчей
Необходимо всегда обращаться к .pgtags для получения коммита (или тега patches17_N), который следует выполнить checkout — фиксация конкретного значения приведет к его устареванию. Процесс сборки проверяет данное условие и прекращается при использовании иного набора патчей.
# Извлечь значение строки "17:" из orioledb/.pgtags. Значение представляет собой
# либо SHA коммита, либо имя тега, например, patches17_14.
PATCHSET=$(curl -fsSL https://raw.githubusercontent.com/orioledb/orioledb/main/.pgtags | awk -F': ' '/^17: /{print $2}')
# Выполнить извлечение тегов, в случае если .pgtags указывает на тег.
git fetch --tags origin
git checkout "$PATCHSET"
Включить поддержку Valgrind в коде PostgreSQL (необязательно)
sed -i.bak "s/\/\* #define USE_VALGRIND \*\//#define USE_VALGRIND/g" src/include/pg_config_manual.h
Настроить и выполнить сборку
PG_PREFIX=$HOME/pg17
./configure --enable-debug --enable-cassert --enable-tap-tests --with-icu --prefix=$PG_PREFIX
make -j$(nproc)
make -j$(nproc) install
make -C contrib -j$(nproc)
make -C contrib -j$(nproc) install
echo "export PATH=\"$PG_PREFIX/bin:\$PATH\"" >> ~/.bashrc
source ~/.bashrc
Установить зависимости Python
# Создать venv, если необходимо
python -m venv venv
# Активировать venv, если необходимо
source ./venv/bin/activate
pip3 install -r requirements.txt
sudo pip3 install compiledb
Скачать и собрать расширение OrioleDB
cd ..
git clone https://github.com/orioledb/orioledb.git
cd orioledb
# Выполнить сборку с compiledb, так как создается compile_commands.json, необходимый для расширения VSCode C/C++
compiledb make USE_PGXS=1 IS_DEV=1
# Исключить compile_commands.json из отслеживания Git
echo "compile_commands.json" >> .git/info/exclude
Скачать и установить Visual Studio Code
cd ..
wget --content-disposition "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"
sudo apt install ./code_*.deb
# Установить расширения Python и C++
code --install-extension ms-python.python
code --install-extension ms-vscode.cpptools
code orioledb
Проверить установку
Запуск автоматизированных тестов
cd orioledb
make USE_PGXS=1 IS_DEV=1 installcheck
Ручная установка и запуск
cd orioledb
make USE_PGXS=1 IS_DEV=1 install
initdb --no-locale -D $HOME/pgdata
sed -i 's/#shared_preload_libraries = '\'''\''/shared_preload_libraries = '\''orioledb'\''/' $HOME/pgdata/postgresql.conf
pg_ctl -D $HOME/pgdata/ start -l $HOME/log
psql -c "CREATE EXTENSION IF NOT EXISTS orioledb; SELECT orioledb_commit_hash();" -d postgres
MacOS
Отключить System Integrity Protection
Выполнить действия согласно инструкции по отключению System Integrity Protection.
Установить Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Установить зависимости
brew install python zstd pkg-config icu4c openssl wget gnu-sed
sudo cpan IPC::Run
echo "export PKG_CONFIG_PATH=\"\$PKG_CONFIG_PATH:$(brew --prefix icu4c)/lib/pkgconfig\"" >> ~/.zshrc
# Для устройств с чипом Intel
echo "export CFLAGS=\"$CFLAGS -I/usr/local/include\"" >> ~/.zshrc
echo "export LDFLAGS=\"$LDFLAGS -L/usr/local/lib\"" >> ~/.zshrc
#
# Для устройств с чипом Apple M
echo "export CFLAGS=\"$CFLAGS -I/opt/homebrew/include\"" >> ~/.zshrc
echo "export LDFLAGS=\"$LDFLAGS -L/opt/homebrew/lib\"" >> ~/.zshrc
#
exec zsh -l
Скачать и установить PostgreSQL 17 с патчами
git clone https://github.com/orioledb/postgres.git --branch patches17 --single-branch postgres-patches17
cd postgres-patches17/
Выполнить checkout необходимого набора патчей
Необходимо всегда обращаться к .pgtags для получения коммита (или тега patches17_N), который следует выполнить checkout — фиксация конкретного значения приведет к его устареванию. Процесс сборки проверяет данное условие и прекращается при использовании иного набора патчей.
# Извлечь значение строки "17:" из orioledb/.pgtags. Значение представляет собой
# либо SHA коммита, либо имя тега, например, patches17_14.
PATCHSET=$(curl -fsSL https://raw.githubusercontent.com/orioledb/orioledb/main/.pgtags | awk -F': ' '/^17: /{print $2}')
# Выполнить извлечение тегов, в случае если .pgtags указывает на тег.
git fetch --tags origin
git checkout "$PATCHSET"
Настроить и выполнить сборку
PG_PREFIX=$HOME/pg17
./configure --enable-debug --enable-cassert --enable-tap-tests --with-icu --prefix=$PG_PREFIX
make -j$(nproc)
make -j$(nproc) install
make -C contrib -j$(nproc)
make -C contrib -j$(nproc) install
echo "export PATH=\"$PG_PREFIX/bin:\$PATH\"" >> ~/.zshrc
exec zsh -l
Установить зависимости Python
# Создать venv, если необходимо
python -m venv venv
# Активировать venv, если необходимо
source ./venv/bin/activate
pip3 install -r requirements.txt
sudo pip3 install compiledb
Скачать и собрать расширение OrioleDB
cd ..
git clone https://github.com/orioledb/orioledb.git
cd orioledb
# Выполнить сборку с compiledb, так как создается compile_commands.json, необходимый для расширения VSCode C/C++
compiledb make USE_PGXS=1 IS_DEV=1
# Исключить compile_commands.json из отслеживания Git
echo "compile_commands.json" >> .git/info/exclude
Скачать и установить Visual Studio Code
cd ..
brew install --cask visual-studio-code
exec zsh -l
# Установить расширения Python и C++
code --install-extension ms-python.python
code --install-extension ms-vscode.cpptools
code orioledb
Проверить установку
Запуск автоматизированных тестов
cd orioledb
make USE_PGXS=1 IS_DEV=1 installcheck
Ручная установка и запуск
cd orioledb
make USE_PGXS=1 IS_DEV=1 install
initdb --no-locale -D $HOME/pgdata
gsed -i 's/#shared_preload_libraries = '\'''\''/shared_preload_libraries = '\''orioledb'\''/' $HOME/pgdata/postgresql.conf
pg_ctl -D $HOME/pgdata/ start -l $HOME/log
psql -c "CREATE EXTENSION IF NOT EXISTS orioledb; SELECT orioledb_commit_hash();" -d postgres
Windows
Установить Ubuntu в WSL
wsl --install -d Ubuntu
После этого перезагрузить систему, запустить Ubuntu из меню «Пуск» и указать логин/пароль.
wsl --shutdown
Запустить Ubuntu из меню «Пуск» повторно.
Установить зависимости
sudo hwclock --hctosys
sudo apt-get update
sudo apt install git build-essential flex bison pkg-config libreadline-dev make gdb libipc-run-perl libicu-dev python3 python3-dev python3-pip python3-setuptools python3-testresources libzstd1 libzstd-dev valgrind libssl-dev libcurl4-openssl-dev wget
Скачать и установить PostgreSQL 17 с патчами
git clone https://github.com/orioledb/postgres.git --branch patches17 --single-branch postgres-patches17
cd postgres-patches17/
Выполнить checkout необходимого набора патчей
Необходимо всегда обращаться к .pgtags для получения коммита (или тега patches17_N), который следует выполнить checkout — фиксация конкретного значения приведет к его устареванию. Процесс сборки проверяет данное условие и прекращается при использовании иного набора патчей.
# Извлечь значение строки "17:" из orioledb/.pgtags. Значение представляет собой
# либо SHA коммита, либо имя тега, например, patches17_14.
PATCHSET=$(curl -fsSL https://raw.githubusercontent.com/orioledb/orioledb/main/.pgtags | awk -F': ' '/^17: /{print $2}')
# Выполнить извлечение тегов, в случае если .pgtags указывает на тег.
git fetch --tags origin
git checkout "$PATCHSET"
Включить поддержку Valgrind в коде PostgreSQL (необязательно)
sed -i.bak "s/\/\* #define USE_VALGRIND \*\//#define USE_VALGRIND/g" src/include/pg_config_manual.h
Настроить и выполнить сборку
PG_PREFIX=$HOME/pg17
./configure --enable-debug --enable-cassert --enable-tap-tests --with-icu --prefix=$PG_PREFIX
make -j$(nproc)
make -j$(nproc) install
make -C contrib -j$(nproc)
make -C contrib -j$(nproc) install
echo "export PATH=\"$PG_PREFIX/bin:\$PATH\"" >> ~/.bashrc
source ~/.bashrc
Установить зависимости Python
# Создать venv, если необходимо
python -m venv venv
# Активировать venv, если необходимо
source ./venv/bin/activate
pip3 install -r requirements.txt
sudo pip3 install compiledb
Скачать и собрать расширение OrioleDB
cd ..
git clone https://github.com/orioledb/orioledb.git
cd orioledb
# Выполнить сборку с compiledb, так как создается compile_commands.json, необходимый для расширения VSCode C/C++
compiledb make USE_PGXS=1 IS_DEV=1
# Исключить compile_commands.json из отслеживания Git
echo "compile_commands.json" >> .git/info/exclude
Скачать и установить Visual Studio Code
https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
Установить расширения Python и C++ для VSCode
code --install-extension ms-vscode-remote.remote-wsl
code --remote wsl+ubuntu /home/USERNAME/orioledb
В терминале VSCode:
code --install-extension ms-python.python
code --install-extension ms-vscode.cpptools
Проверить установку
Запуск автоматизированных тестов
make USE_PGXS=1 IS_DEV=1 installcheck
Ручная установка и запуск
make USE_PGXS=1 IS_DEV=1 install
initdb --no-locale -D $HOME/pgdata
sed -i 's/#shared_preload_libraries = '\'''\''/shared_preload_libraries = '\''orioledb'\''/' $HOME/pgdata/postgresql.conf
pg_ctl -D $HOME/pgdata/ start -l $HOME/log
psql -c "CREATE EXTENSION IF NOT EXISTS orioledb; SELECT orioledb_commit_hash();" -d postgres