@pgsql

Страница 718 из 1062
Vladimir
19.03.2018
08:33:36


Vladimir
19.03.2018
08:34:32
https://www.postgresql.org/docs/current/static/datatype-numeric.html variable-precision, *inexact*

Artem
19.03.2018
08:41:10
камрады, глупый вопрос, можно ли в макоси через brew установить только клиент постгреса? или же при установке формулы postgresql brew ставит весь софт, и клиентскую и серверную части?

Alexey
19.03.2018
08:42:16
а всё потому, что постгрес плохо печатает числа с плавающей точкой. select (2.4e0 + 4.8e0) вернёт 7.2, из-за чего у неискушённого пользователя возникнет ощущение, что результат можно сравнивать с 7.2e0

Google
Alexey
19.03.2018
08:42:57
а mysql на запрос select (2.4e0 + 4.8e0) вернёт 7.199999999999999 и будет прав. и пользователю будет понятнее, почему результат не равен 7.2

Vladimir
19.03.2018
08:45:04
Да, замечал эти девятки в конце или 7.0000000000001 На определенных числах

Спасибо, жёстко!) Получается вообще нельзя складывать без преобразования такие типы.

Maksim
19.03.2018
08:50:04
Alexey
19.03.2018
08:52:21
Спасибо, жёстко!) Получается вообще нельзя складывать без преобразования такие типы.
складывать можно. но нужно понимать, что для вычисления результата 2.4e0 + 4.8e0 происходят три вещи: 1) конвертация каждого числа из десятичного формата в двоичный; 2) вычисление в двоичном формате 3) преобразование результата в десятичный. На каждом этапе возможна потеря точности. поэтому результат может отличаться от "правильного"

Anton [Mgn, az09@osm]
19.03.2018
08:59:41
https://habrahabr.ru/post/112953/ много теории с картинками ) на самом деле я видел то ли в википедии то ли на гитхабе статью о сравнении "близких" величин на разных ЯП (SQL это же ЯП? ;) кто знает ссылку поделитесь плиз

Yaroslav
19.03.2018
09:03:05
а mysql на запрос select (2.4e0 + 4.8e0) вернёт 7.199999999999999 и будет прав. и пользователю будет понятнее, почему результат не равен 7.2
А Вы уверены, что именно это поведение в этом конкретном случае —- правильное (я просто не помню, что там в стандарте)?

Irina
19.03.2018
09:04:54
Всем привет! Не увидела правил чата и как можно писать о вакансиях, так что вот: #Вакансия в Рокетбанке, нужен прокаченный Администратор PostgreSQL. Вопросы можно мне или моим коллегам из ИТ, их контакты дам, если напишите мне в личку, в телеге. Вот немного инфо о нас https://holy.rocketbank.ru/, а вот о вакансии https://hh.ru/vacancy/24720610.

Alexey
19.03.2018
09:05:05
А Вы уверены, что именно это поведение в этом конкретном случае —- правильное (я просто не помню, что там в стандарте)?
уверен, да. просто постгрес ошибочно округляет всё до DBL_DIG цифр. а mysql печатает минимальное количество цифр, которые нужны для представления бинарного числа. иногда для этого требуется больше, чем DBL_DIG десятичных цифр

Yaroslav
19.03.2018
09:06:32
> просто постгрес ошибочно округляет всё Нет, не просто. В PostgreSQL тип результата этого выражения —- numeric, а не float. Поэтому-то я и спросил...

Alexey
19.03.2018
09:09:01
> просто постгрес ошибочно округляет всё Нет, не просто. В PostgreSQL тип результата этого выражения —- numeric, а не float. Поэтому-то я и спросил...
для печати бинарного числа нужно выполнить одинаковые действия, независимо от того, считать результат numeric-ом или float-ом. а именно: преобразовать бинарное число в формате IEEE 754 в десятичное представление

Darafei
19.03.2018
09:09:24
но numeric - не IEEE 754

Google
Darafei
19.03.2018
09:09:34
иначе он не сможет выдать точность

Alexey
19.03.2018
09:10:15
И что? В Numeric результат-то _точно_ 7.2
а то, что оно в данном примере как раз не _точно_ 7.2

Yaroslav
19.03.2018
09:11:07
а то, что оно в данном примере как раз не _точно_ 7.2
В каком "данном"? В "select (2.4e0 + 4.8e0)" результат точно 7.2::numeric.

Alexey
19.03.2018
09:14:54
В каком "данном"? В "select (2.4e0 + 4.8e0)" результат точно 7.2::numeric.
в исходном примере было 2.4::double precision вместо 2.4e0. я считал, что в постгресе эти записи эквивалентны. оказывается нет, но всего сказанного это не отменяет.

Vladimir
19.03.2018
09:17:50


Постгрес по дефолту округляет на отображение, но на это можно повлиять.

Alexey
19.03.2018
09:18:18
зачем постгрес считает числа в научной нотации numeric-ами — отдельный вопрос

можно повлиять, и получить мусор в тех числах, где столько цифр не нужно

как вот в этом примере

Vladimir
19.03.2018
09:19:57
Alexey
19.03.2018
09:20:07
мусор в отрисовке, да

Alexey
19.03.2018
09:21:19
короче, парни, прочитайте статью под названием "Printing Floating-Point Numbers Quickly and Accurately". там это всё в деталях разбирают

или посмотрите на библиотеку dtoa, которая написана по той статье. Именно её многие проекты используют для печати чисел. И только постгрес до сих пор использует printf() + костыль в виде extra_float_digits

Yaroslav
19.03.2018
09:25:45
мусор в отрисовке, да
Ну а у -hackers противоположное мнение, как я понимаю (это обсуждалось, как мне помнится).

Alexey
19.03.2018
09:27:07
Ну а у -hackers противоположное мнение, как я понимаю (это обсуждалось, как мне помнится).
да как обычно обсуждалось. кто-то из динозавров сказал "нам такое не нужно", и конец обсуждению

Yaroslav
19.03.2018
09:29:42
да как обычно обсуждалось. кто-то из динозавров сказал "нам такое не нужно", и конец обсуждению
Ссылка-то есть? Аргументация, если не ошибаюсь, состоит в том, что text <-> float должен давать одинаковый результат на любой платформе (если честно, float-ы мне мало интересны, в т.ч. из-за таких "фокусов").

Alexey
19.03.2018
09:31:15
на самом деле text <-> float должен быть таким, чтобы любые преобразования text->float->text и float->text->float были идемпотентными. а в постгресе это не так, хоть с extra_float_digits, хоть без

Darafei
19.03.2018
09:38:51
на самом деле text <-> float должен быть таким, чтобы любые преобразования text->float->text и float->text->float были идемпотентными. а в постгресе это не так, хоть с extra_float_digits, хоть без
о, а можешь сказать, что надо делать, если у нас есть заданная точность в количестве знаков? я просто буквально недавно в постгисе отпиливал функцию, которая координату печатает по даблу и количеству цифр после запятой датасета

Google
Darafei
19.03.2018
09:39:49
там просто как раз вот этой идемпотентности нет и преобразование в текст оговорено как lossy

но вдруг есть правильный путь

Alexey
19.03.2018
09:42:06
но вдруг есть правильный путь
да, правильный путь подробно описан в "Printing Floating-Point Numbers Quickly and Accurately" и реализован в библиотеке dtoa

точнее, вот ссылки на статьи, по которым написана dtoa: https://dl.acm.org/citation.cfm?id=93559&coll=portal&dl=ACM https://dl.acm.org/citation.cfm?id=93557&coll=portal&dl=ACM

Darafei
19.03.2018
09:49:50
да, правильный путь подробно описан в "Printing Floating-Point Numbers Quickly and Accurately" и реализован в библиотеке dtoa
а там точность / количество знаков в текстовом представлении как параметр есть?

Alexey
19.03.2018
09:50:37
а там точность / количество знаков в текстовом представлении как параметр есть?
в том-то и дело, что нет. оно выбирается автоматически для каждого конкретного числа. в этом весь rocket science

потому что с фиксированным параметром каждый дурак может

Darafei
19.03.2018
09:51:04
окей, тогда мы не сможем его заюзать

Alexey
19.03.2018
09:51:32
а вы сможете заюзать обёртку над dtoa

примерно вот такую: https://github.com/mysql/mysql-server/blob/5.7/strings/dtoa.c#L92

Darafei
19.03.2018
09:59:14
примерно вот такую: https://github.com/mysql/mysql-server/blob/5.7/strings/dtoa.c#L92
а в чём соль брать суперточную конверсию и потом резать её по символу?

если что, сейчас так: https://github.com/postgis/postgis/blob/8a78bf0323dcbe47dd597287c1892432723efdc6/liblwgeom/lwprint.c#L488

Alexey
19.03.2018
10:02:09
а в чём соль брать суперточную конверсию и потом резать её по символу?
там в комментариях написано: This function is a wrapper around dtoa() to do the same as sprintf(to, "%-.*f", precision, x), though the conversion is usually more precise . Но да, если мы ограничивваем количество знаков, никакой идемпотентности не может быть по определению

Иван
19.03.2018
15:36:11
Здравствуйте, пытаюсь поменять в jboss драйвер jdbc`шный, заменяю в standalone-fill.xml на <driver>postgresql-42.1.4.jar</driver>, в папку deployments кидаю сам драйвер, но standalone-full все равно заменяет строку с указанным драйвером на старый. Что такое может быть?

Alexander
19.03.2018
15:42:54
Это вопрос в pro.jvm, скорее

Аггей
19.03.2018
18:06:44
Зачем так?

Google
Аггей
19.03.2018
18:07:13
Установите модуль через jboss-cli

Valery
19.03.2018
18:09:51
Народ, подскажите пожалуйста какие лучше всего поставить значения на autovacuum_freeze_max_age и autovacuum_multixact_freeze_max_age говорят дефолтные малы( Заранее большое спасибо!

Аггей
19.03.2018
18:18:50
Установите модуль через jboss-cli
cd /tmp; wget https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar; /home/wildfly/wildfly/bin/jboss-cli.sh --commands="module add --name=org.postgres --resources=/tmp/postgresql-9.4.1212.jar --dependencies=javax.api"

Valery
19.03.2018
19:02:28
За сколько добегаете до 2 млрд транзакций?
затрудняюсь ответить, не замерял. сейчас по базам по дефолту стоит 200мл. Сейчас такая ситуация



я так понимаю, что если не сделать vacuum freez будут проблемы?. Поясните плиз.

Anton [Mgn, az09@osm]
19.03.2018
19:12:00
да что вы знаете о вакансиях http://www.magmfc.ru/vacancy >Знание любого сервера БД >Заработная плата - от 27 000 руб. Квартальные премии

Darafei
19.03.2018
19:13:53
я почему-то сначала посчитал рубли белорусскими и позавидовал

Anton [Mgn, az09@osm]
19.03.2018
19:14:11
а потом?

Darafei
19.03.2018
19:15:33
а потом почитал требования и узнал, что меня не возьмут, у меня ж высшего образования нет

Аггей
19.03.2018
20:13:26
>Заработная плата - от 27 000 руб. Квартальные премии Ну я когда-то работал в похожем учереждении. Оклад был 5120 рублей. На руки всегда было > 45000. Расчетка состояла из граф - Оклад, Надбавка за высокие достижения, Надбавка за ненормированный рабочий день, За выслугу лет, За работу в районах приравненых к районам крайнего севера, Премия по итогам месяца (на все предыдущее в размере от 100 до 300 процентов), разовая премия за ... (не каждый месяц - но часто)... В итоге чистыми выходило для Читы нормально.

Потом когда перешел работать в частные фирмы - все наоборот. На собеседовании говорят ЗП грязными... иногда очень грязными - в итоге звучит хорошо, на руки приблизительно тоже самое

des1roer
20.03.2018
04:53:17
приветствую

а как использовать он конфликт для уникального составного индекса?

INSERT INTO "description" ("item_id", "value", "description_type_id") VALUES (9214, 'тест изменения шаблона описания для ##name## товара', 3), (9213, 'тест изменения шаблона описания для ##name## товара', 3), (9212, 'тест изменения шаблона описания для ##name## товара', 3) ON CONFLICT (item_id, description_type_id) DO UPDATE SET value = EXCLUDED.value

[42P10] ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification

CREATE TABLE description ( id SERIAL NOT NULL CONSTRAINT description_pkey PRIMARY KEY, item_id INTEGER CONSTRAINT fk_description_item_id REFERENCES item ON UPDATE CASCADE ON DELETE CASCADE, description_type_id INTEGER CONSTRAINT fk_description_description_type_id REFERENCES description_type ON UPDATE CASCADE ON DELETE CASCADE, value TEXT ); CREATE UNIQUE INDEX u_description_item_id_description_type_id ON description (item_id, description_type_id);

crux
20.03.2018
05:35:24
https://hi-tech.mail.ru/news/yohanson-virus/?frommail=1

какой феерический бред

Google
crux
20.03.2018
05:35:56
Никто не знает CVE есть уже про это?

чет там постгре замешан, но мейлру выдало ну полную чушь

crux
20.03.2018
05:37:48
о, спасибо

des1roer
20.03.2018
05:47:52
хей

а что будет с сериалом. когда у него закончатся цифры? по новой пойдет?

Yaroslav
20.03.2018
06:45:17
а как использовать он конфликт для уникального составного индекса?
Да с виду должно работать. Какая версия PostgreSQL?

а что будет с сериалом. когда у него закончатся цифры? по новой пойдет?
Нет, остановится. Попробуйте: CREATE SEQUENCE test_seq AS integer START WITH 2147483647; SELECT nextval('test_seq'); SELECT nextval('test_seq');

Sergey
20.03.2018
07:38:51
Люди) как узнать какой максимальный request size можно выполнить на postgres БД? мне нужно большой SQL query (280мб) разбить на несколько файлов, а за один раз ошибку выдает о превышении лимита размера запроса

пытался сделать это с помощью "psql <credentials> -f myscript.sql"

Darafei
20.03.2018
07:44:38
А что там внутри?

Страница 718 из 1062