powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / INCREMENT BY в create sequence ограничен 2^31-1 ?
24 сообщений из 24, страница 1 из 1
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974616
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в доке почему-то НЕ говорится, что вот тута:
CREATE {SEQUENCE | GENERATOR} seq_name
[START WITH value] [INCREMENT [BY] increment];

-- можно издевацца над инкрементом только в очень узких пределах:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> recreate sequence g2 start with -9223372036854775808 increment by 2147483647;
SQL> recreate sequence g2 start with 9223372036854775807 increment by -2147483647;
SQL> recreate sequence g2 start with -9223372036854775808 increment by 2147483648;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 67
-2147483648
SQL> recreate sequence g2 start with 9223372036854775807 increment by -2147483648;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 67
-2147483648

Это так и должно быть (я про узкие пределы) ?
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974759
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

по идее не должно. Хотя с другой стороны

RDB$GENERATOR_INCREMENT INTEGER
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974762
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
занафига инкременты по 100500 мильонов? Шобы було? Или шобы быстрее генератор завернулся в продакшене?
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974765
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> занафига инкременты по 100500 мильонов? Шобы було?

Ты интересные вопросы задаёшь, аднака.
Неправильные какие-то.
Ник ТСа не разглядел что ли?

P.S. Я тебе даже отвечу за него -
"потому что не запрещено!"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974769
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

так то оно не нужно.

Таблоид,

в доке ещё много чего не говорится. Ибо пишется она исходя из других документов. В которых таких тонкостей нет.
Добавлю.
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974770
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Добавлю.

Ну и зря. Я бы такой херней не страдал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974870
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Ну генераторы у нас хранят 64 битные значения, поэтому может показаться что и инкремент может быть 64 битным. Лучше сразу написать чтобы недоразумений не было.
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974877
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrзанафига инкременты по 100500 мильонов? Шобы було? Или шобы быстрее генератор завернулся в продакшене?Это так, "академический интерес" просто вспых... :-)

Симонов ДенисЛучше сразу написать чтобы недоразумений не было.Да, добавь, плз.
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974884
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

гы, а

Код: sql
1.
select gen_id(g2,  21474836480) as n from rdb$database



работает
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974895
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

этот gen_id(), я так понимаю, "своим ходом" идёт, независимым: там и (+/-)2^63-1 можно указывать :-)
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38974965
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
dimitrзанафига инкременты по 100500 мильонов? Шобы було? Или шобы быстрее генератор завернулся в продакшене?
Торг как на базаре :) Занафига 2 миллиарда? Шобы було? Хватит и 32 тыщ :)
У GEN_ID(GenName, Increment) вторым параметром INTEGER или BIGINT?
Проверил, BIGINT там.

Применение больших значений например такое: генератору филиальных баз нужно для каждой БД иметь нумерацию ID [StartId..StartId+N], не пересекающуюся с другими БД.
N = MaxInt * 16, чтобы хватило надолго
Для каждой новой базы нужно теперь сгенерировать свой StartId. Логично это делать с помощью генератора с приращением N. Но вот беда - кто-то решил что приращения MaxInt должно хватать на все наши задачи :) Нам повезло что можно использовать GEN_ID(G_StartId, 4G * 16). Но это хард-код. Гораздо логичней выглядит генератор с соответствующим приращением.

И абсолютно не важно что по этому поводу думает sql-стандарт :) А он вполне может себе думать что и 32 тыщ хватит.
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38975060
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-генератору филиальных баз нужно для каждой БД иметь нумерацию ID
[StartId..StartId+N], не пересекающуюся с другими БД.
Нарушение первой НФ detected.

-Для каждой новой базы нужно теперь сгенерировать свой StartId. Логично это делать
с помощью генератора с приращением N.
Какая странная у некоторых логика...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38975776
Dimitry Sibiryakov-генератору филиальных баз нужно для каждой БД иметь нумерацию ID
[StartId..StartId+N], не пересекающуюся с другими БД.Нарушение первой НФ detectedКакое условие 1NF нарушено?
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38975881
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-dimitrзанафига инкременты по 100500 мильонов? Шобы було? Или шобы быстрее генератор завернулся в продакшене?
Торг как на базаре :) Занафига 2 миллиарда? Шобы було? Хватит и 32 тыщ :)
У GEN_ID(GenName, Increment) вторым параметром INTEGER или BIGINT?
Проверил, BIGINT там.

Применение больших значений например такое: генератору филиальных баз нужно для каждой БД иметь нумерацию ID [StartId..StartId+N], не пересекающуюся с другими БД.
N = MaxInt * 16, чтобы хватило надолго
Для каждой новой базы нужно теперь сгенерировать свой StartId. Логично это делать с помощью генератора с приращением N. Но вот беда - кто-то решил что приращения MaxInt должно хватать на все наши задачи :) Нам повезло что можно использовать GEN_ID(G_StartId, 4G * 16). Но это хард-код. Гораздо логичней выглядит генератор с соответствующим приращением.

И абсолютно не важно что по этому поводу думает sql-стандарт :) А он вполне может себе думать что и 32 тыщ хватит.

ну так и генерируй с помощью GEN_ID(GenName, Increment)

INCREMENT используется только конструкцией NEXT VALUE FOR. И отличное от инкремента значение в неё не воткнёшь. А для более редко встречающихся зада остался GEN_ID
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976033
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов ДенисINCREMENT используется только конструкцией NEXT VALUE FOR. И отличное от инкремента значение в неё не воткнёшь.
Дак как раз это и требуется. Но нельзя - INCREMENT слишком большой. А в GEN_ID можно, т.к. там INCREMENT нормальный. Такое поведения называется по-разному:
- двойственность
- нецелостность
- внутренняя противоречивость

...и вызывает искренние непонятки у людей которые считают что пользуются не только бесплатным, но вместе с тем и внутренне непротиворечивым продуктом :)
Понятно что у продукта есть история и что он в прошлом тысячелетии писался так как писался, но сейчас то никто не запрещает сделать всё правильно. Или есть кто? :)
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976042
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

в GEN_ID вообще побоку что там у генератора установлено.
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976046
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

какая нафиг история. INCREMENT появился в трёшке только в этом году
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976102
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов Денискакая нафиг история. INCREMENT появился в трёшке только в этом году
Вооооот. И почему типом INCREMENT был выбран не маленький SMALLINT и не большой BIGINT, а средненький такой INTEGER? :) Хотя результирующее значение генератора именно BIGINT, и в GEN_ID тип INCREMENT тоже BIGINT.
Если причина именно такого решения - техническая, то тогда это одно. А если причина очень напоминает "ну я считаю что этого всем всегда достаточно" и доводы других просто не слышатся, то это в грусть-печаль вводит.
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976115
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стесняюсь спросить...Какое условие 1NF нарушено?
Ты не поверишь, но у первой НФ только одно условие. И оно гласит "не пихайте в одно поле
несколько логических значений". Так что тот, кто засунул идентификатор БД в поле
идентификатора записи - ССЗБ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976120
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

спроси Claudio Valderrama. В конце концов не нравится напиши трекеру
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976156
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов Денисспроси Claudio Valderrama. В конце концов не нравится напиши трекеру
Бюрократы :)
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976160
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

а я то тут причём? Я к разработке FB отношение не имею. Подсказал тебе кто эту фичу внедрял
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976221
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У анонимусов летнее обострение?
...
Рейтинг: 0 / 0
INCREMENT BY в create sequence ограничен 2^31-1 ?
    #38976906
1 НФ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovТы не поверишь, но у первой НФ только одно условие. И оно гласит "не пихайте в одно поле несколько логических значений". При всем уважении - не поверю Dimitry SibiryakovТак что тот, кто засунул идентификатор БД в поле идентификатора записи - ССЗБ.При условии что выделенный диапазон используется как признак, идентифицирующий базу.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / INCREMENT BY в create sequence ограничен 2^31-1 ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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