powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Тип COMPUTED поля в метаданных (? пользовательский/системный)
25 сообщений из 34, страница 1 из 2
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656745
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю таблицу с вычислимыми полями разных типов
Код: sql
1.
2.
3.
4.
5.
6.
7.
create table test(
ID integer, 
comp1 computed(2+3),
comp2 integer computed(2+3),
comp3 numeric(18,4) computed(2+3),
comp4 double precision computed(2+3)
)


Как в метаданных опознать, что пользователь ЯВНО задал тип вычислимого поля, а он не автоматический по выражению?
Поля реально создаются с указанными типами, но как при представлении DDL к этому адаптироваться...
В rdb$relation_fields ничего не нашел на эту тему.
Ibexpert выдает в таком виде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE TEST (
    ID     INTEGER,
    COMP1  COMPUTED BY (2+3),
    COMP2  COMPUTED BY (2+3),
    COMP3  NUMERIC(18,4) COMPUTED BY (2+3),
    COMP4  COMPUTED BY (2+3)
);
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656793
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barry,

версия FB какая?
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656910
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barry,

Никак, ибо сервер при создании таких полей эту дополнительную информацию, в т.ч. если в качестве типа указать домен, никак не сохраняет. В трекере есть застарелый тикет на эту тему, проголосуй, может дождемся когда-нибудь.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656921
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
печально
Симонов Денисверсия FB какая?Смотрел на WI-V3.0.0.32483
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656934
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barryВ rdb$relation_fields ничего не нашел на эту тему.

надо искать в RDB$FIELDS.RDB$FIELD_TYPE
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656940
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисbarryВ rdb$relation_fields ничего не нашел на эту тему.надо искать в RDB$FIELDS.RDB$FIELD_TYPE
Так точно. Который(е) выбирать по соотв. rdb$relation_fields.rdb$field_source


barryIbexpert выдает в таком виде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE TEST (
    ID     INTEGER,
    COMP1  COMPUTED BY (2+3),
    COMP2  COMPUTED BY (2+3),
    COMP3  NUMERIC(18,4) COMPUTED BY (2+3),
    COMP4  COMPUTED BY (2+3)
);

Кстати, надо уточнить не "баг" ли это.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39656981
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамbarryIbexpert выдает в таком виде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE TEST (
    ID     INTEGER,
    COMP1  COMPUTED BY (2+3),
    COMP2  COMPUTED BY (2+3),
    COMP3  NUMERIC(18,4) COMPUTED BY (2+3),
    COMP4  COMPUTED BY (2+3)
);

Кстати, надо уточнить не "баг" ли это.

Похоже на баг, ага. Если RDB$FIELD_SUB_TYPE = 1, то в определение поля включается и тип в явном виде.
Однако же зачем-то я это сделал... не помню уже.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657085
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисbarryВ rdb$relation_fields ничего не нашел на эту тему.
надо искать в RDB$FIELDS.RDB$FIELD_TYPEТип поля вообще... я как бы в курсе...
Речь о ситуации когда пользователь в скрипте явно перекрывает тип, который сервер определяет по выражению.
Код: sql
1.
2.
comp1 computed(2+3),
comp3 numeric(18,4) computed(2+3),


При извлечении метаданных (при сравнении баз) мне надо понять - переопределен ли пользователем тип.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657097
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barry,

и... RDB$FIELDS.RDB$FIELD_TYPE в данном случае хранит именно переопределённый тип. Ты бы проверил что ли.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657110
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисRDB$FIELDS.RDB$FIELD_TYPE в данном случае хранит именно переопределённый тип

Разумеется. Но узнать по нему, задавал ли пользователь тип явно, практически невозможно.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657126
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barryПри извлечении метаданных (при сравнении баз) мне надо понять - переопределен ли пользователем тип.Зачем ?
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657187
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladbarryПри извлечении метаданных (при сравнении баз) мне надо понять - переопределен ли пользователем тип.Зачем ?Зачем юзер хочет numeric(18,4)? Ну не знаю... может у него проблемы с психикой, но он так решил и так хочет. Вы дали ему в руки такой инструмент и он им воспользовался.
Или зачем мне? Мне ставят проблему соответствующую - типа мы вот сравниваем базу со скриптом, а она все время не совпадает.
comp1 computed(2+3),
comp3 numeric(18,4) computed(2+3),
Мне надо comp1 извлечь без типа, а comp3 с типом. Если я оба поля извлеку без типов у меня совпадет, но юзер будет неудовлетворен игнорированием его типа. Я из базы могу извлечь оба поля с типами, но у меня несовпадение по скрипту.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657193
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barry,

а ну ка погоди. Судя по твоему сообщению для NUMERIC(x, y) тип то как раз в скрипте IBE присутствует. Он теряется для других типов (double precision)
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657198
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barryЯ из базы могу извлечь оба поля с типами, но у меня несовпадение по скрипту.Ну так исправят свой скрипт один раз, раз оно им ТАК надо
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657200
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если же оно тебе надо больше - препарируй селект с нужным выражением и узнаешь тот тип, который сервер сам вычислил.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657488
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисbarry,
а ну ка погоди. Судя по твоему сообщению для NUMERIC(x, y) тип то как раз в скрипте IBE присутствует. Он теряется для других типов (double precision)Зачем мне IBE, у меня своя приблуда. Но проблема у нас одна с IBE. Нам надо показать скрипт таблицы в том виде, как задал пользователь. Смотри мой самый первый скрипт с 4-мя полями у таблицы. Там перекрыт тип у трех полей, а не у одного. IBE NUMERIC показывает, но остальные переопределенные поля без типа. И он показывает NUMERIC не по здравой логике, а по "женской"...
IBExpertПохоже на баг, ага. Если RDB$FIELD_SUB_TYPE = 1, то в определение поля включается и тип в явном виде.
Однако же зачем-то я это сделал... не помню уже.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657496
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕсли же оно тебе надо больше - препарируй селект с нужным выражением и узнаешь тот тип, который сервер сам вычислил.Я знаю тип и так из системных таблиц, я же для обычных полей все равно тип достаю. Мне не проблема узнать тип вообще... моя проблема - серверный авто-тип или пользовательский перекрытый тип.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657518
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barry> Нам надо показать скрипт таблицы в том виде, как задал пользователь.

Я щас глянул - ИМХО никак, даже с ручным prepare для перевычисления,
ибо computed_source и blr у них идентичный. Так что смириться с тем, что
сервер "приводит" типы. Ну или предложить пользователям хранить тип
или выражение целиком в description и вытаскивать оттуда.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657549
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barryЯ знаю тип и так из системных таблиц, я же для обычных полей все равно тип достаю. Мне не проблема узнать тип вообще... моя проблема - серверный авто-тип или пользовательский перекрытый тип.

Ну так взял выражение, засунул его в select, препарировал, узнал тип результата. Сравнил с тем, что в RDB$FIELDS лежит.
Не совпадает - значит, пользователь его переопределил.
Лично я этим заниматься не буду. Надо пользователю - пусть кастит явно результат прямо в выражении.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657562
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert> Ну так взял выражение, засунул его в select, препарировал, узнал тип результата.

Вытащить исходный всё равно не получится.
Исходное выражение (текст) сохраняется не целиком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657567
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВытащить исходный всё равно не получится.
Исходное выражение (текст) сохраняется не целиком.


В смысле? Выражение COMPUTED BY сохраняется целиком, так что теоретически его можно засунуть в селект и препарировать.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657580
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert> В смысле? Выражение COMPUTED BY сохраняется целиком,

Да, но без типа.

IBExpert> так что теоретически его можно засунуть в селект и препарировать.

И вернёмся к исходному вопросу - как отличить авто-тип от ручного. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657594
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамИ вернёмся к исходному вопросу - как отличить авто-тип от ручного. :)


Выше писал: cравнить результат препарирования с тем, что в RDB$FIELDS лежит.
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657620
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господи, Саш, не тормози. Я эту идею понял уже когда Влад про препаре подсказал.
Но *отличить* соотв. типы не получится, если они будут совпадать. Чтобы вам всем
было проще Бориса понять, я упрощу его пример:

Код: sql
1.
2.
3.
4.
5.
create table test(
ID integer, 
comp1 computed(2+3),
comp2 bigint computed(2+3)
)




Последние 2 поля вы никак не отличите, ни по систаблицам, ни по препаре computed-выражения.

Ферштейн?

P.S. Не спрашивай меня, нафига это ему (или его пользователям) нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тип COMPUTED поля в метаданных (? пользовательский/системный)
    #39657631
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамГосподи, Саш, не тормози. Я эту идею понял уже когда Влад про препаре подсказал.
Но *отличить* соотв. типы не получится, если они будут совпадать.


Тормозит тут кто-то другой, а не я. Когда типы совпадают, никаких проблем нет.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Тип COMPUTED поля в метаданных (? пользовательский/системный)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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