Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: Сто тысяч "Почему так реализовано?"  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4046
rdb_dev
Симонов Денис
а как раз ограничения от доменов в PSQL часто мешают. Особенно какой-нибудь NOT NULL
Никогда не ставлю доменам NOT NULL. Вот уж действительно - бесполезная глупость.
Ну и зря.
У меня во всех таблицах есть поле типа T_KEY - очень удобно. Почти во всех - поле(поля) типа T_DATETIME_NN и прочие.
И в параметрах/переменных в процедурах - тоже, хоть и не всегда, тут надо с умом использовать домены с ограничениями. Но тоже удобно.
Я вообще практически не использую голые типы (без доменов).
24 сен 19, 01:33    [21977434]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
kdv, в примере ниже я предпочёл бы, вместо объявления исключения и использования его по условию в IF, просто написать:
DECLARE VARIABLE dig INT64 CHECK(dig BETWEEN 0 AND 9)
не создавая для подобных вещей кучи доменов на все случаи жизни и получая стандартное сообщение об ошибке.
+ Пример BCD_TO_INT64
CREATE OR ALTER EXCEPTION "any__xImproperValue" 'Improper value';

SET TERM ^;
CREATE OR ALTER FUNCTION BCD_TO_INT64
  (
    "bcd" INT64 DEFAULT NULL
  )
  RETURNS INT64
  DETERMINISTIC
AS
  DECLARE VARIABLE tmp    INT64;
  DECLARE VARIABLE dig    INT64;
  DECLARE VARIABLE factor INT64 DEFAULT 1;
  DECLARE VARIABLE ret    INT64 DEFAULT 0;
BEGIN
  IF (:"bcd" IS NULL) THEN
    RETURN NULL;
  tmp = "bcd";
  WHILE (:tmp != 0 AND :tmp != -1) DO
    BEGIN
      dig = Bin_AND(tmp, 0x0f);
      IF (:dig > 9) THEN
        EXCEPTION "any__xImproperValue";
      ret = ret + dig * factor;
      factor = factor * 10;
      tmp = Bin_SHR(tmp, 4);
    END
  RETURN ret;
END^
SET TERM ;^

Или, в случае с вычисляемыми полями, когда в CHECK находится какая-то функция, которая писана не мной и вообще эта функция в UDF/UDR, то для проверки выходного значения я предпочёл бы иметь более описательный вариант объявления столбца таблицы:
"field_3" UINT8 COMPUTED BY (SomeFunction("id"))
вместо
"field_3" SMALLINT COMPUTED BY (SomeFunction("id"))
CONSTRAINT test__chk CHECK("field_3" BETWEEN 0 AND 255)

А когда при объявлении поля я путаю порядок указания DEFAULT и NOT NULL, то без матов точно не обходится. И вот таких мелочей, которые, казалось бы, должны работать хотя бы из принципа единообразия, огромное количество и это попросту выбешивает. Конечно, это не похоже на хождение по граблям - не тот масштаб, но всё равно неприятно.
24 сен 19, 10:00    [21977561]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
YuRock, "в каждой избушке свои погремушки".
24 сен 19, 10:01    [21977566]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4046
rdb_dev
YuRock, "в каждой избушке свои погремушки".
Просто не вижу в этом подводных камней.
И потому не вижу смысла не забывать копипастить везде NOT NULL или NOT NULL DEFAULT CURRENT_TIMESTAMP.
24 сен 19, 11:29    [21977660]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис
Был даже тикет чтобы к чекам определённое пользователем сообщение делать, но не сделали.
Я нашёл другой тикет.
24 сен 19, 11:33    [21977662]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис
комьюнити эта твоя супер фича на фиг не упёрлась. Иначе бы давно попросили.
И я кстати против такой возможности
Попросили давно, ещё в 2007-ом году для версии 2.5.
24 сен 19, 11:38    [21977667]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28336
rdb_dev
редпочёл бы иметь более описательный вариант объявления столбца

смешались в кучу... Вот зачем ты смешиваешь в кучу?
24 сен 19, 11:38    [21977668]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
kdv, затем, что это примерно из той же оперы про доказательство необходимости, казалось бы, очевидных и элементарных вещей, которые должны работать, но не работают.
24 сен 19, 11:40    [21977676]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28336
rdb_dev,

да нифига не "из той же оперы". Я вообще не понимаю, как у вас там с логикой. Не работает логика совсем (включая "подобия").
24 сен 19, 13:31    [21977869]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Дмитрий, причём тут логика? За ассоциативные связи объектов отвечает ментальный набор атрибутов аналогий объектов, который у нас с тобой разный. :) Просто мой набор атрибутов аналогий шире и более формализован.
24 сен 19, 14:15    [21977942]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9525
+ Дывысь кум (ц) советский анекдот
Идут по Киеву два кума.
Подходит к ним прохожий: Каак прайти на Крещатик?
Кумы: Га?
Прохожий: Шпрехензидойч?
Кумы: Га?
Прохожий: Дуюспикинглиш?
Кумы: Га?
Прохожий чертыхнулся и пошёл дальше.
Первый кум: Дывысь, кум, яка вумна людина - скильки мовий знает!
Второй кум: Ну и чим та ий помогло?
24 сен 19, 15:55    [21978119]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 17103
rdb_dev
Дмитрий, причём тут логика? За ассоциативные связи объектов отвечает ментальный набор атрибутов аналогий объектов, который у нас с тобой разный. :) Просто мой набор атрибутов аналогий шире и более формализован.
Вот чё-то умное написал, я не понял. На всякий случай, если это маты какие-то, предупреждение.
24 сен 19, 16:10    [21978149]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28336
rdb_dev
ментальный набор атрибутов аналогий объектов

ШТА???
24 сен 19, 16:15    [21978157]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9525
kdv
ШТА???
"Рецессивный аллель влияет на фенотип только если генотип гомозиготен".

P.S.
"Во многих знаниях - многия печали"
24 сен 19, 16:17    [21978162]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
kdv
rdb_dev
ментальный набор атрибутов аналогий объектов

ШТА???
Та ни шо!... Просто выпендриваюсь. :)
24 сен 19, 16:19    [21978164]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10154
rdb_dev,

у меня предложение. А давай всё оставим как есть
24 сен 19, 16:21    [21978167]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8413
rdb_dev
Просто выпендриваюсь. :)
А летать-то умеешь?
http://www.vostokolyub.info/myblog/horoshiy-anekdot-malenkaya-pritcha-34.htm
24 сен 19, 16:23    [21978172]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Basil A. Sidorov
"Во многих знаниях - многия печали"
"И кто умножает познания, умножает скорбь"
/Экклесиаст/
24 сен 19, 16:24    [21978173]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис
rdb_dev, у меня предложение. А давай всё оставим как есть
Боюсь, нас комьюнити не поймёт. :)
24 сен 19, 16:28    [21978182]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Ivan_Pisarevsky
А летать-то умеешь?
Канэшна! Я же ворона, тока белая.
24 сен 19, 16:29    [21978184]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10154
rdb_dev,

ну не всё, а твою чепуху с CHECK в DECLARE. Всё равно желающих её реализовать не найдётся
24 сен 19, 16:31    [21978187]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис, людей, желающих что-то реализовывать вообще очень немного. :)
24 сен 19, 16:34    [21978193]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10154
rdb_dev,

ты сам готов предложить патч?
24 сен 19, 16:52    [21978223]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 17103
Симонов Денис,

Же не манж па сис жур
24 сен 19, 17:24    [21978268]     Ответить | Цитировать Сообщить модератору
 Re: Сто тысяч "Почему так реализовано?"  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 3061
Симонов Денис
rdb_dev, ты сам готов предложить патч?
Чтобы предложить патч, надо, для начала, разобраться в исходниках. Даже боюсь представить, сколько времени этой займёт.
24 сен 19, 18:55    [21978372]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить