powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 2.5, computed column, integer division, default types
20 сообщений из 20, страница 1 из 1
FB 2.5, computed column, integer division, default types
    #39198914
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
create table nums (a int, b generated always as (3*a));
commit;
alter table nums add z computed by (a/4 + 7);
commit;



... и так далее.

fieldtypeformulaA INTEGER B BIGINT (3*a)S BIGINT (-a + 7)U INTEGER (a)M INTEGER (-a)N INTEGER (+a)I BIGINT (a+1)O BIGINT (a+0)Q BIGINT (a*1)P BIGINT (a*0)DBIGINT(a/4)Z BIGINT (a/4 + 7)

OK, O,Q,P - вырожденные "особые случаи", бог с ними.

Но зачем расширять тип в случаях целочисленного деления - D и Z ?
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39198990
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

если тебе надо что-то конкретное, лучше пиши напрямую
Код: sql
1.
alter table nums add z integer computed by (a/4 + 7);
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39198998
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

1. для этого в системных таблицах FB тоже не хватает информации

http://www.sql.ru/forum/1205742/skript-tablic-s-polem-vychislimogo-polya-s-yavnym-tipom

собственно это всё как раз на волне обсуждения БД в СКВ

2. тем не менее, вопрос остается - зачем расширять значения и делать лишнюю нагрузку на память/процессор там, где расширение заведомо ненужно
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199033
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochНо зачем расширять тип в случаях целочисленного деления - D и Z ?
могу лишь сказать, что этот вопрос относится к вычисляемым полям лишь косвенно. Потому что у фб есть правила для "выходных типов" вычисляемых выражений.
И для результата int/что-то будет bigint.
Код: sql
1.
select cast(22 as int)/3 from rdb$database
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199063
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

это понятно, что косвенно.

но ведь не будет же FB целочисленной деление делать через плавающую запятую?
22/3 через 22/3.0 ?

а тогда - не может число увеличиться по модулю при делении

а тогда - нет никакого смысла увеличивать диапазаон при чистом делении
а также во многих случаях целочисленного div+add(sub)
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199076
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

10/(1/100) ку?
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199083
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Это я про увеличение диапазона, если что. С мобилы зашел -неудобно.
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199091
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
/*
* In the SQL standard, the precision and scale of the quotient of exact
* numeric dividend and divisor are implementation-defined: we have defined
* the precision as 18 (in other words, an SINT64), and the scale as the
* sum of the scales of the two operands.
*/
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199346
Guest 255
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvArioch,

если тебе надо что-то конкретное, лучше пиши напрямую..
Код: sql
1.
alter table nums add z integer computed by (a/4 + 7);



Пользуясь случаем, предлагаю всем заинтересованным проголосовать за http://tracker.firebirdsql.org/browse/CORE-1407
Да и http://tracker.firebirdsql.org/browse/CORE-1386 на самом деле стоило бы переоткрыть как не до конца на самом деле решенный..
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199657
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterArioch,

10/(1/100) ку?

деление на ноль, и что ?
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199673
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

тем более, раз стандарт это не задает, то нет запрета и подумать о более эффективной реализации, хотя бы в плане нагрузки на ОЗУ/кэши :-)
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199691
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

впрочем, не всегда - а как раз в зависимости от доступности типа int64

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
--FB 2.5.5 ODS 11.2

select
  cast (3 as smallint)
   /
  cast ( -5 as smallint)
from mon$database

0  BIGINT



но

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
--FB 2.5.5 ODS 11.1

select
  cast (3 as smallint)
   /
  cast ( -5 as smallint)
from mon$database

-0.6  DOUBLE PRECISION



и тут получается ещё интереснее - в расширенный тип конвертируются не результаты действия, а аргументы...
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199703
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochDarkMasterArioch,

10/(1/100) ку?

деление на ноль, и что ?

Ну как бы не совсем ;) 10/(1/100) = 10 / 0.01 = 1000. При граничных значениях изначально integer аргументов легко получим переполнение, если тип не расширять.
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199742
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

1 / 100 = 0, целочисленное деление однако
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199788
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

А, это я накосячил, признаю.
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199834
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

а это ещё как повезёт :-(


DarkMaster,

...я сначала хотел тебе написать "Здесь вам не Паскаль", но оказалось, это зависит от ODS
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199851
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Насколько помню еще и SQLDialect роль играет.
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199854
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch...я сначала хотел тебе написать "Здесь вам не Паскаль", но оказалось, это зависит от ODSИщи дальше, ОДС тут не при чём
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199856
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterНасколько помню еще и SQLDialect роль играет
только он и играет
...
Рейтинг: 0 / 0
FB 2.5, computed column, integer division, default types
    #39199963
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно ткнул в БД с первым диалектом.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 2.5, computed column, integer division, default types
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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