|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Делаю таблицу с вычислимыми полями разных типов Код: sql 1. 2. 3. 4. 5. 6. 7.
Как в метаданных опознать, что пользователь ЯВНО задал тип вычислимого поля, а он не автоматический по выражению? Поля реально создаются с указанными типами, но как при представлении DDL к этому адаптироваться... В rdb$relation_fields ничего не нашел на эту тему. Ibexpert выдает в таком виде: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 17:33 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barry, версия FB какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 18:07 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barry, Никак, ибо сервер при создании таких полей эту дополнительную информацию, в т.ч. если в качестве типа указать домен, никак не сохраняет. В трекере есть застарелый тикет на эту тему, проголосуй, может дождемся когда-нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 20:34 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
печально Симонов Денисверсия FB какая?Смотрел на WI-V3.0.0.32483 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 21:12 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barryВ rdb$relation_fields ничего не нашел на эту тему. надо искать в RDB$FIELDS.RDB$FIELD_TYPE ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 21:35 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Симонов ДенисbarryВ rdb$relation_fields ничего не нашел на эту тему.надо искать в RDB$FIELDS.RDB$FIELD_TYPE Так точно. Который(е) выбирать по соотв. rdb$relation_fields.rdb$field_source barryIbexpert выдает в таком виде: Код: sql 1. 2. 3. 4. 5. 6. 7.
Кстати, надо уточнить не "баг" ли это. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 21:46 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамbarryIbexpert выдает в таком виде: Код: sql 1. 2. 3. 4. 5. 6. 7.
Кстати, надо уточнить не "баг" ли это. Похоже на баг, ага. Если RDB$FIELD_SUB_TYPE = 1, то в определение поля включается и тип в явном виде. Однако же зачем-то я это сделал... не помню уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 03:53 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Симонов ДенисbarryВ rdb$relation_fields ничего не нашел на эту тему. надо искать в RDB$FIELDS.RDB$FIELD_TYPEТип поля вообще... я как бы в курсе... Речь о ситуации когда пользователь в скрипте явно перекрывает тип, который сервер определяет по выражению. Код: sql 1. 2.
При извлечении метаданных (при сравнении баз) мне надо понять - переопределен ли пользователем тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 09:53 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barry, и... RDB$FIELDS.RDB$FIELD_TYPE в данном случае хранит именно переопределённый тип. Ты бы проверил что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 10:03 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Симонов ДенисRDB$FIELDS.RDB$FIELD_TYPE в данном случае хранит именно переопределённый тип Разумеется. Но узнать по нему, задавал ли пользователь тип явно, практически невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 10:18 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barryПри извлечении метаданных (при сравнении баз) мне надо понять - переопределен ли пользователем тип.Зачем ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 10:35 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
hvladbarryПри извлечении метаданных (при сравнении баз) мне надо понять - переопределен ли пользователем тип.Зачем ?Зачем юзер хочет numeric(18,4)? Ну не знаю... может у него проблемы с психикой, но он так решил и так хочет. Вы дали ему в руки такой инструмент и он им воспользовался. Или зачем мне? Мне ставят проблему соответствующую - типа мы вот сравниваем базу со скриптом, а она все время не совпадает. comp1 computed(2+3), comp3 numeric(18,4) computed(2+3), Мне надо comp1 извлечь без типа, а comp3 с типом. Если я оба поля извлеку без типов у меня совпадет, но юзер будет неудовлетворен игнорированием его типа. Я из базы могу извлечь оба поля с типами, но у меня несовпадение по скрипту. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 11:10 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barry, а ну ка погоди. Судя по твоему сообщению для NUMERIC(x, y) тип то как раз в скрипте IBE присутствует. Он теряется для других типов (double precision) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 11:18 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barryЯ из базы могу извлечь оба поля с типами, но у меня несовпадение по скрипту.Ну так исправят свой скрипт один раз, раз оно им ТАК надо ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 11:22 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Если же оно тебе надо больше - препарируй селект с нужным выражением и узнаешь тот тип, который сервер сам вычислил. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 11:25 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Симонов Денисbarry, а ну ка погоди. Судя по твоему сообщению для NUMERIC(x, y) тип то как раз в скрипте IBE присутствует. Он теряется для других типов (double precision)Зачем мне IBE, у меня своя приблуда. Но проблема у нас одна с IBE. Нам надо показать скрипт таблицы в том виде, как задал пользователь. Смотри мой самый первый скрипт с 4-мя полями у таблицы. Там перекрыт тип у трех полей, а не у одного. IBE NUMERIC показывает, но остальные переопределенные поля без типа. И он показывает NUMERIC не по здравой логике, а по "женской"... IBExpertПохоже на баг, ага. Если RDB$FIELD_SUB_TYPE = 1, то в определение поля включается и тип в явном виде. Однако же зачем-то я это сделал... не помню уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 15:29 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
hvladЕсли же оно тебе надо больше - препарируй селект с нужным выражением и узнаешь тот тип, который сервер сам вычислил.Я знаю тип и так из системных таблиц, я же для обычных полей все равно тип достаю. Мне не проблема узнать тип вообще... моя проблема - серверный авто-тип или пользовательский перекрытый тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 15:33 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barry> Нам надо показать скрипт таблицы в том виде, как задал пользователь. Я щас глянул - ИМХО никак, даже с ручным prepare для перевычисления, ибо computed_source и blr у них идентичный. Так что смириться с тем, что сервер "приводит" типы. Ну или предложить пользователям хранить тип или выражение целиком в description и вытаскивать оттуда. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 15:53 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
barryЯ знаю тип и так из системных таблиц, я же для обычных полей все равно тип достаю. Мне не проблема узнать тип вообще... моя проблема - серверный авто-тип или пользовательский перекрытый тип. Ну так взял выражение, засунул его в select, препарировал, узнал тип результата. Сравнил с тем, что в RDB$FIELDS лежит. Не совпадает - значит, пользователь его переопределил. Лично я этим заниматься не буду. Надо пользователю - пусть кастит явно результат прямо в выражении. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 16:14 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
IBExpert> Ну так взял выражение, засунул его в select, препарировал, узнал тип результата. Вытащить исходный всё равно не получится. Исходное выражение (текст) сохраняется не целиком. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 16:28 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамВытащить исходный всё равно не получится. Исходное выражение (текст) сохраняется не целиком. В смысле? Выражение COMPUTED BY сохраняется целиком, так что теоретически его можно засунуть в селект и препарировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 16:32 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
IBExpert> В смысле? Выражение COMPUTED BY сохраняется целиком, Да, но без типа. IBExpert> так что теоретически его можно засунуть в селект и препарировать. И вернёмся к исходному вопросу - как отличить авто-тип от ручного. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 16:42 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамИ вернёмся к исходному вопросу - как отличить авто-тип от ручного. :) Выше писал: cравнить результат препарирования с тем, что в RDB$FIELDS лежит. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 16:47 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Господи, Саш, не тормози. Я эту идею понял уже когда Влад про препаре подсказал. Но *отличить* соотв. типы не получится, если они будут совпадать. Чтобы вам всем было проще Бориса понять, я упрощу его пример: Код: sql 1. 2. 3. 4. 5.
Последние 2 поля вы никак не отличите, ни по систаблицам, ни по препаре computed-выражения. Ферштейн? P.S. Не спрашивай меня, нафига это ему (или его пользователям) нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 16:58 |
|
Тип COMPUTED поля в метаданных (? пользовательский/системный)
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамГосподи, Саш, не тормози. Я эту идею понял уже когда Влад про препаре подсказал. Но *отличить* соотв. типы не получится, если они будут совпадать. Тормозит тут кто-то другой, а не я. Когда типы совпадают, никаких проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 17:02 |
|
|
start [/forum/topic.php?fid=40&msg=39657567&tid=1561080]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 463ms |
0 / 0 |