Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
Дмитрий
- Сообщения: 127
- Зарегистрирован: 26 окт 2004, 11:05
Сообщение
Дмитрий » 03 мар 2005, 13:26
Люди добрые, помогите!
Нужен текст запроса к системным таблицам, который для определенной таблицы возвращает: название поля, тип поля, описание поля. Поля должны следовать в том порядке, в котором указывались при создании таблицы.
Просьба не отправлять к документации. Пробовал сам написать, но ИБ эксперт ругается последними словами, что типа транзакция не стартована и т.п. Окошки разные выбрасывает, проверить запрос не дает!

-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 03 мар 2005, 14:18
www.ibase.ru/devinfo/sysqry.htm
между прочим, это вторая ссылка если на ibase.ru в "поиск" набрать "запрос к системным таблицам.
Пробовал сам написать, но ИБ эксперт ругается последними словами, что типа транзакция не стартована и т.п. Окошки разные выбрасывает, проверить запрос не дает!
это бред, ибо IBE как и серверу все равно - запрос это к обычным таблицам или к системным.
-
Дмитрий
- Сообщения: 127
- Зарегистрирован: 26 окт 2004, 11:05
Сообщение
Дмитрий » 03 мар 2005, 15:31
это бред, ибо IBE как и серверу все равно - запрос это к обычным таблицам или к системным
Это не бред. Запускаем в эксперте SQL-монитор и смотрим, как эксперт получает эти данные. Копируем запрос и выполняем. И после этого начинается ругань.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 03 мар 2005, 20:16
ругань где, в SQL Editor? На что??? сроду в IBE не было никакой ругани на запросы хоть к каким таблицам.
Ты из моего документа запрос взял? Выполнил? Ругань была?
-
Дмитрий
- Сообщения: 127
- Зарегистрирован: 26 окт 2004, 11:05
Сообщение
Дмитрий » 04 мар 2005, 09:53
ругань где, в SQL Editor
В нем, родимом. После выполнения запроса, когда появляется окошко результатов, вся эта ругань и начинается. Типа, транзакция не стартована, нарушение доступа и т.п. Причем, это только на запросах к таблицам RDB$...
Ты из моего документа запрос взял? Выполнил? Ругань была?
Взял, выполнил, все ОК!
Единственное, так и не вытащил дескрипшн полей.

-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 04 мар 2005, 10:11
В нем, родимом. После выполнения запроса, когда появляется окошко результатов, вся эта ругань и начинается. Типа, транзакция не стартована, нарушение доступа и т.п. Причем, это только на запросах к таблицам RDB$...
приведи пример запроса. не верю я в это. или у тебя какой-то древний IBExpert, или это барабашка.
Единственное, так и не вытащил дескрипшн полей.
какие проблемы, товарищ!? запрос написан человеческим языком. системные таблицы не являются секретом, все видно как на ладони. такая проблема добавить к селекту rdb$description из rdb$fields ?
ты на запрос-то посмотри, там все проще некуда.
-
Дмитрий
- Сообщения: 127
- Зарегистрирован: 26 окт 2004, 11:05
Сообщение
Дмитрий » 04 мар 2005, 10:20
приведи пример запроса
Да все просто. Открываешь SQL монитор. Кликаешь по какой-нибудь таблице и смотришь, что экперт делает. Копируешь из монитра самый большой запрос и выполняешь. У меня начинается ругань.
или у тебя какой-то древний IBExpert
2004.12.14
такая проблема добавить к селекту rdb$description из rdb$fields
Так добавлял! NULL возвращает, а в эксперте видно!
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 04 мар 2005, 10:40
1. открыл монитор, скопировал "какой-нибудь" запрос. выполнил в SQL Editor. все ОК. IBE 2005.01.16, вопрос тогда к твоему старому IBE?
2. запрос смотрел, фары протирал, по колесам стучал?

Таблицу rdb$relation_fields видел? подумай хоть чуть над запросом.
список таблиц - rdb$relations. список их столбцов - rdb$relation_fields. список полных описаний столбцов - rdb$fields. IBE наверняка для доменов описание кладет в rdb$description для rdb$fields, а для столбцов таблицы - в rdb$relation_fields.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 04 мар 2005, 10:42
и еще - ну раз ты в sql monitor смотришь, то вот такое например видел?
Код: Выделить всё
select RDB$DESCRIPTION from RDB$RELATION_FIELDS
where (RDB$RELATION_NAME = 'RDB$RELATION_CONSTRAINTS') and
(RDB$FIELD_NAME = 'RDB$CONSTRAINT_TYPE')
IDX_NAME = RDB$INDEX_6
это тебе прямо намек, откуда оно описание столбцов берет. последняя строка к запросу не имеет отношения - это сервисный вывод IBE. Может ты именно такой запрос в SQL Editor вставляешь?
-
Дмитрий
- Сообщения: 127
- Зарегистрирован: 26 окт 2004, 11:05
Сообщение
Дмитрий » 04 мар 2005, 11:17
Может ты именно такой запрос в SQL Editor вставляешь
Дим, я понимаю, что меня не видно, но все равно, разве я похож на дурака?
Насчет DESCRIPTION приношу извинения. Это я вчера не из той базы выбирал. Там описаний действительно нет.
вопрос тогда к твоему старому IBE
Скорей всего к нему. Кажется, я понял, в чем дело. Транзакции не подтвержденные в IBE могут на это влиять?
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 04 мар 2005, 11:31
Дим, я понимаю, что меня не видно, но все равно, разве я похож на дурака?
а я? и ссылки на свой сайт даю, и запросы проверяю...
Скорей всего к нему. Кажется, я понял, в чем дело. Транзакции не подтвержденные в IBE могут на это влиять?
не-зна-ю. я вообще впервые вижу подобное поведение. с этим лучше в конфу к Хвастунову, только обновить IBE надо. А то и вдруг у него был наведенный баг, и он его исправил.