Битовые операторы работают только для целых типов данных, в то время как другие операторы доступны для всех числовых типов данных.
Table 9-3 показывает доступные математические функции. В этой таблице, dp означает тип данных double precision. Многие из этих функций предоставляются в нескольких формах с разными типами аргументов. Кроме особых случае, любые представленные формы какой-либо функции возвращают тот же тип данных, что и её аргумент. Функции работающие с данными типа double precision в основном реализованы с помощью системных библиотечных функций языка C; таким образом их точность и поведение могут отличаться в зависимости от операционной системы.
Table 9-3. Математические функции
Функция | Возвращаемый тип | Описание | Пример | Результат |
---|---|---|---|---|
abs(x) | (такой же как у аргумента) | значение по модулю | abs(-17. 4) | 17.4 |
cbrt(dp) | dp | кубический корень | cbrt(27.0) | 3 |
ceil(dp or numeric) | (такой же как у аргумента) | округление до целого в меньшую сторону | ceil(-42.8) | -42 |
ceiling(dp or numeric) | (такой же как у аргумента) | округление до целого в меньшую сторону (псевдоним для ceil ) | ceiling(-95.3) | -95 |
degrees(dp) | dp | радианты в градусы | degrees(0.5) | 28.6478897565412 |
div(y numeric,
x numeric) | numeric | целый множитель y/x | div(9,4) | 2 |
exp(dp or numeric) | (такой же как у аргумента) | экспонента | exp(1. 0) | 2.71828182845905 |
floor(dp or numeric) | (такой же как у аргумента) | округление до целого в большую сторону | floor(-42.8) | -43 |
ln(dp or numeric) | (такой же как у аргумента) | натуральный логарифм | ln(2.0) | 0.693147180559945 |
log(dp or numeric) | (такой же как у аргумента) | десятичный логарифм | log(100.0) | 2 |
log(b numeric,
x numeric) | numeric | логарифм по базе b | log(2.0, 64.0) | 6.0000000000 |
mod(y,
x) | (такой же как у аргументов) | остаток от деления y/x | mod(9,4) | 1 |
pi() | dp | «π» constant | pi() | 3.14159265358979 |
power(a dp,
b dp) | dp | a возведённое в степень b | power(9. 0, 3.0) | 729 |
power(a numeric,
b numeric) | numeric | a возведённое в степень b | power(9.0, 3.0) | 729 |
radians(dp) | dp | градусы в радианы | radians(45.0) | 0.785398163397448 |
random() | dp | случайное значение в диапазоне 0.0 <= x < 1.0 | random() | |
round(dp или numeric) | (такой же как у аргумента) | округление до ближайшего целого | round(42.4) | 42 |
round(v numeric, s int) | numeric | округление до s десятичных разрядов | round(42.4382, 2) | 42.44 |
setseed(dp) | void | установить начало последовательности для вызовов random() (значением между -1.0 и 1. 0, inclusive) | setseed(0.54823) | |
sign(dp or numeric) | (такой же как у аргумента) | знак аргумента (-1, 0, +1) | sign(-8.4) | -1 |
sqrt(dp или numeric) | (такой же как у аргумента) | квадратный корень | sqrt(2.0) | 1.4142135623731 |
trunc(dp или numeric) | (такой же как у аргумента) | усечение дробной части | trunc(42.8) | 42 |
trunc(v numeric, s int) | numeric | усечение до s десятичных разрядов | trunc(42.4382, 2) | 42.43 |
width_bucket(op numeric, b1 numeric, b2 numeric, count int) | int | return the bucket to which operand would be assigned in an equidepth histogram with count buckets, in the range b1 to b2 | width_bucket(5. 35, 0.024, 10.06, 5) | 3 |
width_bucket(op dp, b1 dp, b2 dp, count int) | int | width_bucket(5.35, 0.024, 10.06, 5) | 3 |
В заключение, Table 9-4 показывает
доступные тригонометрические функции. Все тригонометрические функции
принимают аргументы и возвращают значение типа double
precision. Аргументы тригонометрических функций выражаются в
радианах. Обратные функции возвращают значения выражаемые в радианах.
См. выше функции преобразования элементов radians()
и degrees()
.
Table 9-4. Тригонометрические функции
Функция | Описание |
---|---|
acos(x) | арккосинус |
asin(x) | арксинус |
atan(x) | арктангенс |
atan2(y, x) | арктангенс y/x |
cos(x) | косинус |
cot(x) | котангенс |
sin(x) | синус |
tan(x) | тангенс |
Back to top
База данных— расширяемость на PostgreSQL
Задавать вопрос
спросил
Изменено 7 лет, 4 месяца назад
Просмотрено 435 раз
Я создал собственное R-дерево: «rtree.
Я хочу создать расширение в postgres со своей собственной структурой данных (Используя PostGis), я уже читал о Interfacing Extensions To Indexes и сейчас читаю здесь несколько примеров, но, честно говоря, я не понимаю все, как я могу использовать свое собственное R-дерево для создания расширяемости, я понимаю понятия об операторах, индексах и т. д., но я не знаю, как это сделать.
Итак, как я могу подключить свой файл к PostGis, а затем создать расширение для PostgreSQL?
Поскольку расширения являются функциями, скажем, один пример на веб-сайте PostgreSQL:
СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ФУНКЦИЮ my_consistent(internal, data_type, smallint, oid, internal) ВОЗВРАЩАЕТ логическое значение КАК "MODULE_PATHNAME" ЯЗЫК C СТРОГО;
Как именно это работает? MODULE_PATHNAME равно /path/rtree.h?
- база данных
- postgresql
- структуры данных
- postgis
С точки зрения того, как определить функцию, написанную на C в postgres, вы должны сначала скомпилировать объект, поэтому 'MODULE PATHNAME'
будет rtree. so
в системах Linux и, возможно, dll в Windows. Код в каталоге функций здесь предоставляет схему определений функций в C и функцию SQL для объявления функции в Postgres.
Что касается реализации R-Tree, я бы использовал уже найденный вами ресурс GIST. Я не думаю, что вы можете просто скомпилировать свою программу R-Tree.c
, и она просто заработает, вы должны работать с конструкцией GIST. Похоже, что когда-то в стволе Postgres была реализация r-дерева, которую вы могли бы найти, или вы могли бы взглянуть на это расширение сути B-дерева, которое находится в текущем стволе: https://github.com /postgres/postgres/tree/master/contrib/btree_gist.
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
конференции Магнуса Хагандера
Эта страница содержит список докладов о PostgreSQL, с которыми я выступил (отдельно или вместе с другими) на различных публичных конференциях. Если вы хотите использовать любой из этих разговоров частично или полностью, пожалуйста, свяжитесь со мной, и мы может что-то получиться. Я абсолютно не против их использования другими, просто дайте мне знать заранее, и, пожалуйста, укажите мое имя (и другие включены, в этих случаях) 🙂
Если вы заинтересованы в том, чтобы я выступил с одним из этих выступлений, или еще один, просто напишите мне.
Если не указано иное, эти презентации доступны в Creative Commons BY-NC 4.0 лицензия.
Проведены или запланированы доклады
- Взгляд на слоновий хобот — PostgreSQL 15
- PGConf.EU 2022 (25-28 октября 2022 г.), Swiss PGDay 2022 (1 июля 2022 г.), PGConf.DE 2022 (13 мая 2022 г.), pgday.Paris 2022 (24 марта 2022 г.)
- Взгляд на слоновий хобот — PostgreSQL 14
- PGConf.NYC 2021 (2–3 декабря 2021 г.), PGDay Austria 2021 (17 сентября 2021 г.)
- Взгляд на слоновий хобот — PostgreSQL 13
- Stockholm PUG, октябрь 2020 г. (27 октября 2020 г.), Percona Live (21 октября 2020 г.), Warsaw User Group (29 июня 2020 г.), Postgres Vision (23–24 июня 2020 г.), SCALE 18x (5–8 марта 2020 г.). 2020)
- Сообщество PostgreSQL (основной доклад)
- PGDaySF 2020 (21 января 2020 г.)
- Запуск PostgreSQL.org
- DevOpsSaar (5 декабря 2019 г.)
- Взгляд на слоновий хобот — PostgreSQL 12
- Встреча PostgreSQL в Берлине (21 ноября 2019 г.), Встреча PostgreSQL в Чикаго (12 ноября 2019 г.), Postgres Open 2019 (11–13 сентября 2019 г.), Postgres London 2019 (2–3 июля 2019 г.), PGConf.DE 2019 ( 10 мая 2019 г.), SCALE 17x + PGDay (7-10 марта 2019 г.)
- Сообщество PostgreSQL (основной доклад)
- PGDay.IT 2019(17 мая 2019 г.)
- Подсказки PostgreSQL для разработчиков приложений
- FOSS North 2019 (8-9 апреля 2019 г.), День программиста (13 сентября 2018 г.), ConFoo 2018 (7-9 марта 2018 г. )
- Репликация PostgreSQL в 2019 г.
- Frankfurt PUG (21 марта 2019 г.)
- Резервное копирование PostgreSQL современным способом
- Nordic PGDay 2019 (19 марта 2019 г.), PGCon 2017 (23–26 мая 2017 г.), PGConf.Asia 2016 (2–3 декабря 2016 г.), Postgres Open (13–16 сентября 2016 г.), Stockholm PUG 2016/ 4 (31 августа 2016 г.), PG Day’16 Russia (6–8 июля 2016 г.), pgDay Paris (31 марта 2016 г.)
- Взгляд на слоновий хобот — PostgreSQL 11
- FOSDEM+PGDay 2019 (1–3 февраля 2019 г.), DC PostgreSQL Users Group (14 ноября 2018 г.), Driving IT 2018 (2 ноября 2018 г.), PGConf.EU 2018 (23–26 октября 2018 г.), Postgres Open 2018 (5-7 сентября 2018 г.), Прага PostgreSQL Meetup August (27 августа 2018 г.), PGConf.UK (3 июля 2018 г.), PGConf.DE 2018 (13 апреля 2018 г.), PGDay.paris 2018 (15 марта 2018 г.) 2018)
- Репликация PostgreSQL в 2018 году
- PGConf.Asia 2018 (10–12 декабря 2018 г. ), Nordic PGDay 2018 (13 марта 2018 г.), P2D2 2018 (15 февраля 2018 г.), FOSDEM PGDay 2018 (2–4 февраля 2018 г.)
- Безопасные развертывания PostgreSQL 11
- Группа пользователей PostgreSQL в Нью-Йорке (13 ноября 2018 г.)
- Взгляд на слоновий хобот — PostgreSQL 10
- ConFoo 2018 (7–9 марта 2018 г.), PGConf.Asia (4–6 декабря 2017 г.), 2Q PGconf (6–7 ноября 2017 г.), встреча Inagural Oslo PUG (12 сентября 2017 г.), Postgres Open 2017 ( 6-8 сентября 2017 г.), PGDay.UK (4 июля 2017 г.), Amsterdam PUG (29 июня 2017 г.), pgDay.paris 2017 (23 марта 2017 г.), Nordic PGDay 2017 (21 марта 2017 г.)
- Репликация PostgreSQL в 2017 г.
- PGDay.RU (5-7 июля 2017 г.)
- Полностью автоматизированная интеграция ACME/Letsencrypt
- FOSS-North (26 апреля 2017 г.), Confoo Montreal 2017 (8–10 марта 2017 г.), Open Source Infrastructure @ SCALE (2 марта 2017 г.)
- Взгляд на слоновий хобот — PostgreSQL 9. 6
- Confoo Montreal 2017 (8–10 марта 2017 г.), SCALE+PGDays (2–5 марта 2017 г.), Berlin PUG (17 ноября 2016 г.), PGConf.EU 2016 (1–4 ноября 2016 г.), Postgres Vision 2016 (11-13 октября 2016 г.), Postgres Open (13-16 сентября 2016 г.), PGDay UK 2016 (5 июля 2016 г.), Stockholm PUG 2016/2 (26 апреля 2016 г.), PGConf.US (18-20 апреля) , 2016)
- PostgreSQL для Python
- Pycon Швеция (9-10 мая 2016 г.)
- Взгляд на слоновий хобот — PostgreSQL 9.5
- Nordic PGDay (17 марта 2016 г.), PGConf.SV (17–18 ноября 2015 г.), Dalibo Sessions #7 (24 сентября 2015 г.), Postgres Open (16–18 сентября 2015 г.), PGDay.UK (7 июля) , 2015 г.), Inaugural Amsterdam PostgreSQL Meetup (21 мая 2015 г.), pgDay.paris (21 апреля 2015 г.), PGConf.US (25–27 марта 2015 г.)
- Новое и интересное в PostgreSQL
- ConFoo (24–26 февраля 2016 г.), DrivingIT (6 ноября 2015 г.)
- ТАРДИС для вашего ORM
- ConFoo (24-26 февраля 2016 г. ), Postgres Open (16-18 сентября 2015 г.), PGDay.RU (15-17 июля 2015 г.), Swiss Postgres Conference (26 июня 2015 г.), PGConf.US (25 марта -27, 2015)
- Эволюция сообщества PostgreSQL
- PGConf.RU (4-5 февраля 2016 г.)
- Руководство по безопасности PostgreSQL
- PGDay.RU (15-17 июля 2015 г.)
- Безопасное развертывание PostgreSQL
- Nordic PGDay (11 марта 2015 г.), PGDay.IT (7 ноября 2014 г.), PGDay.RU (3-4 июля 2014 г.)
- Советы и рекомендации по нанесению лака (издание 2015 г.)
- ConFoo (18-20 февраля 2015 г.)
- Бессхемный и реляционный
- ConFoo (18-20 февраля 2015 г.)
- Защита веб-приложений в PostgreSQL
- Techdays от Init (27 ноября 2014 г.)
- Что нового в PostgreSQL 9.4
- PGConf.EU (21–24 октября 2014 г.), Postgres Open (17–19 сентября 2014 г.)
- Безопасность репликации PostgreSQL
- char(14)+pgday. uk (8-9 июля 2014 г.), PGConf NYC (3-4 апреля 2014 г.)
- Встроенная функция аннулирования кеша для повышения частоты попаданий
- Confoo (26–28 февраля 2014 г.), FOSDEM+PGDay (31 января–2 февраля 2014 г.)
- Взгляд на сундук Elephants / Что нового в PostgreSQL 9.4
- FOSDEM+PGDay (31 января — 2 февраля 2014 г.)
- Защитите пароли веб-приложений в PostgreSQL
- Открытие Postgres (16-18 сентября 2013 г.)
- Что нового в PostgreSQL 9.3
- Postgres Open (16-18 сентября 2013 г.), PGDay NYC (22 марта 2013 г.)
- Изучение типов данных PostgreSQL
- Дни открытого исходного кода (9-10 марта 2013 г.), Confoo (27 февраля — 1 марта 2013 г.)
- PostgreNoSQL
- Дни открытого исходного кода (9-10 марта 2013 г.)
- Найдите своих соседей
- Confoo (27 февраля — 1 марта 2013 г. ), Open Source Days (9–10 марта 2012 г.)
- Стратегии резервного копирования PostgreSQL
- PGConf.EU (23–26 октября 2012 г.), Postgres Open (18–19 сентября 2012 г.), NYC PGDay (2 апреля 2012 г.), DC PGDay (30 марта 2012 г.), Austin PGDay (28 марта 2012 г.)
- Взгляд на хобот Слона (9.2)
- дней с открытым исходным кодом (9 марта-10, 2012)
- Безопасное хранилище паролей в PostgreSQL
- PGDay.IT (25 ноября 2011 г.)
- Что нового в PostgreSQL 9.1
- PGDay.IT (25 ноября 2011 г.)
- Безопасность аутентификации — быстрый и простой способ
- FSCONS (11-12 ноября 2011 г.), PGConf.EU (18-21 октября 2011 г.)
- PostgreSQL 9.1 — что нового
- PGConf.EU (18-21 октября 2011 г.)
- Протокол репликации PostgreSQL
- PGConf.EU (18-21 октября 2011 г.), Postgres Open (14-16 сентября 2011 г. ), Char(11) (11-12 июля 2011 г.)
- Аннулирование управляемого данными кэша
- Europython (23 июня 2011 г.), PostgreSQL Conference East (22–25 марта 2011 г.), PGDay.EU (6–8 декабря 2010 г.), PostgreSQL Conference West (2–4 ноября 2010 г.)
- Взгляд на хобот Слона (9.1)
- Дни открытого исходного кода (5 марта 2011 г.), День разработчиков PostgreSQL в Праге (10 февраля 2011 г.)
- Репликация и безопасность базы данных
- Char(10) (2-3 июля 2010 г.)
- Безопасные развертывания PostgreSQL
- PostgreSQL Conference East (25–28 марта 2010 г.), PGCon Brazil 2009 (23–24 октября 2009 г.), PostgreSQL Conference West (16–18 октября 2009 г.)
- Новые функции в PostgreSQL 9.0
- Дни открытого исходного кода (5-6 марта 2010 г.)
- Горячий резерв в PostgreSQL 9.0
- Дни открытого исходного кода (5-6 марта 2010 г. )
- Введение в PostgreSQL
- ФОСС Стокгольм (24 февраля 2010 г.)
- За пределами УНИКАЛЬНОГО
- ФОСДЕМ (6-7 февраля 2010 г.)
- Повышение производительности в PostgreSQL 8.4
- PGDay.EU (6–7 ноября 2009 г.), FSCONS (6–7 ноября 2009 г.), Highload++ (11 октября 2009 г.)
- Использование git для разработки исправления PostgreSQL
- PGCon Бразилия 2009(23-24 октября 2009 г.)
- Зашифрованный PostgreSQL
- PGCon (19-22 мая 2009 г.)
- Развертывание PostgreSQL в Windows Enterprise
- День разработчиков PostgreSQL в Праге (12 февраля 2009 г.), PGCon (20–23 мая 2008 г.), Восточная конференция PostgreSQL (29–30 марта 2008 г.)
- Что нового в PostgreSQL 8.4
- День разработчиков PostgreSQL в Праге (12 февраля 2009 г.), FOSDEM (7-8 февраля 2009 г.)
- Скрытые жемчужины PostgreSQL
- FSCONS (24–26 октября 2008 г.