Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Работа с int как с беззнаковым / 13 сообщений из 13, страница 1 из 1
15.04.2016, 13:58
    #39216604
kunjut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
Привет всем.
В таблице есть столбец "x" со счётчиком, которые обновляются по принципу x = x + y (здесь "y" - некая небольшая положительная величина). Как правильно взаимодействовать с целым типом так, чтобы при переполнении он опрокидывался так-же, как это бы сделал беззнаковый счётчик ?
Или, может быть, как-то изобразить беззнаковый тип ? Может, домен как-то хитро настроить ?
Спасибо.
...
Рейтинг: 0 / 0
15.04.2016, 15:31
    #39216717
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
kunjut,

а bigint нельзя использовать?
...
Рейтинг: 0 / 0
17.04.2016, 14:21
    #39217543
kunjut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
Alexius, использую, но оно тоже знаковое.
...
Рейтинг: 0 / 0
17.04.2016, 15:30
    #39217571
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
kunjut,

скорей всего без костылей тут тогда не обойтись. т.к. в базе есть только знаковые типы и ошибки с переполнениями судя по коду к ним прибиты.

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

возможно я неправильно понял задачу, для чего это необходимо?
...
Рейтинг: 0 / 0
20.04.2016, 14:21
    #39220206
kunjut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
Alexiusскорей всего без костылей тут тогда не обойтись.
возможно я неправильно понял задачу, для чего это необходимо?
Да, я примерно понял, что прямого пути нет.
Надо сделать счётчики netflow. Я понимаю, что 64-битное целой со знаком в обозримом горизонте времени не переполнится, просто хотелось понять, как концептуально верно решать такую задачу.
...
Рейтинг: 0 / 0
20.04.2016, 16:02
    #39220366
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
kunjut,

Можно сделать свой домен на основе существующих типов, повесив ему неотрицательное ограничение.
...
Рейтинг: 0 / 0
21.04.2016, 11:32
    #39221020
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
kunjutAlexius, использую, но оно тоже знаковое.


так тем переполнение не будет...
ну т. е. будет, но уже в другой жизни...
...
Рейтинг: 0 / 0
27.04.2016, 09:17
    #39225252
kunjut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
vyegorovдомен
Ну, я изначально так и сделал, просто экспериментировать как-то руки не дошли: что будет, если формально должно произойти переполнение - ошибка (величина пытается стать отрицательной) или таки опрокидывание.
Ну, ладно, спишем за не очень большой актуальностью уже :)
...
Рейтинг: 0 / 0
04.05.2016, 15:55
    #39229230
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
а что если просто использовать прирост?
- например самое максимальное отрицательное число - это постоянная разница

теперь если нам надо сохранить 500 то в таблице его записываем как 500 + разница (будет чтото типа "минус большое число")
когда из памяти извлекаем то просто отнимаем постоянную разницу мы опять получим 500 и враги сразу непоймут что к чему-)
...
Рейтинг: 0 / 0
05.05.2016, 14:49
    #39229954
kunjut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
Legushkaа что если просто использовать прирост?
- например самое максимальное отрицательное число - это постоянная разница

теперь если нам надо сохранить 500 то в таблице его записываем как 500 + разница (будет чтото типа "минус большое число")
когда из памяти извлекаем то просто отнимаем постоянную разницу мы опять получим 500 и враги сразу непоймут что к чему-)
Я не понял немного, дружище. Можешь как-нибудь иначе сформулировать ?
...
Рейтинг: 0 / 0
05.05.2016, 23:03
    #39230414
IgorNK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
kunjut,

Не надо изобретать велосипед.

Код: plsql
1.
select (-1)::oid
...
Рейтинг: 0 / 0
06.05.2016, 07:37
    #39230483
kunjut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
IgorNKkunjut,

Не надо изобретать велосипед.

Код: plsql
1.
select (-1)::oid


Ну, что-ж, вариант неплохой, спасибо :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
11.04.2018, 08:51
    #39628235
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с int как с беззнаковым
никто случаем не пробовал pguint (или форки)?
чет у меня валится
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Работа с int как с беззнаковым / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]