Множественные апдейты одной записи
Где-то мне попадалось что сильно ускоряли множественные апдейты одной записи в 2.5, или ошибаюсь? Есть древовидная таблица с триггером after delete типа update parent set childs=childs-1 В ней 3000 записей. Если удалять с отключенным триггером, меньше секунды, с включенным 20 минут. Как-то многовато? FB 2.5 последний
Re: Странный план в 2.5.0.26074
Т.е. речь про: select * from cont_res cr join contracts ct on cr.cont_id=ct.cont_id where cr.serv_id=14 and cr.resource is null ? Да Твоя правда :-) Кстати, NOT NULL ты таки снять можешь (если там UK, а не PK). Но не удалить PK, это да. А на что тогда версионность метаданных? Сервер имеет полное право работать в препарированном запросе по старой версии Насколько я понимаю, тут засада в композитном индексе, где NULL - не последний сегмент. Я недавно это объяснял Болтику, цитирую: Это особенность реализации нуллов в индексах. Для ASC-индексов нуллы хранятся как ключи нулевой длины. Поэтому при поиске на частичное соответствие (полей в индексе больше чем в запросе) нулл будет равен любому другому ключу. Аналогия для индекса с 4 сегментами: A = a and B = b and C = c : field like 'abc%' A = a and B = b and C is null : field like 'ab%' .е. нулл после сегмента B есть, но его при поиске не видно, т.к. это ключ нулевой длины. Отсюда и шире выборка, больше чтений. Таким образом, де-факто имеем поиск лишь по первому сегменту композитного индекса, а им выбираются все 100% значений. Ну значит неправильное какое-то хранение индекса выбрано, если он приводит к неожиданным тормозам там, где их совсем не ожидаешь, и даже по плану не отследишь Сечас время такое, что на объемах экономить не надо. Диски гигантские, память дешевая. А вот скорость оптимизировать наоборот - надо. Попробуй пересоздать композитный PK как DESC-индекс. В этом случае нуллы хранятся в виде 0xFF и все должно работать как ожидается. В общем, я вышел из положения создав дополнительный индекс на CONT_RES по двум полям. Благо, сервер его успешно подхватил Ну, или если ты заранее знаешь, что эта выборка по PK фиктивная, то добавь в предикат для CONT_RES любое значения столбца CONT_ID, тогда индексный ключ станет полным и нуллы начнут искаться (и не находиться). Да эта выборка используется как подзапрос другого запроса, и получается что в нее в 95% случаев должен попадать NULL, вот и заметил тормоза Спасибо за участие и консультацию :) P.S. Так ждем 3.0 с реальной многопроцессорностью, что аж сил нет :)
Странный план в 2.5.0.26074
Есть две таблицы, CONT_RES Primary Key=(SERV_ID, RESOURCE, CONT_ID) CONTRACTS Primary Key=(CONT_ID) Делаем простой запрос select * from cont_res cr join contracts ct on cr.cont_id=ct.cont_id where cr.serv_id=14 and cr.resource='1006980' Получаем план PLAN JOIN (CT NATURAL, CR INDEX (PK_CONT_RES)) и кучу неиндексирванных чтений из CONTRACTS Логика поведения сервера тут совершенно непонятна. У нас есть условия на CONT_RES, с ней соединяется CONTRACTS по первичному ключу. Почему не использовать индекс первичного ключа на CONT_ID? Переписываю запрос: select * from cont_res cr left join contracts ct on cr.cont_id=ct.cont_id where cr.serv_id=14 and cr.resource='1006980' PLAN JOIN (CR INDEX (PK_CONT_RES), CT INDEX (RDB$PRIMARY13)) Вроде все хорошо, и план, и чтений нет, но до момента когда в запросе не ставим cr.resource is null И тут же получаем полное индексированное чтение CONT_RES Зачем? CONT_RES.RESOURCE определен как NOT NULL, и входит в первичный ключ. Почему сразу не понять, что читать ничего не надо? Какими силами можно заставить оптимизатор нормально выполнить простейшее соединение двух таблиц, с условием на одну из них?
Re: Странный план в 2.5.0.26074
Типы данных какие? Статистика свежая? CREATE TABLE CONT_RES ( SERV_ID INTEGER NOT NULL, RESOURCE VARCHAR(30) NOT NULL, CONT_ID INTEGER NOT NULL ); CREATE TABLE CONTRACTS ( CONT_ID INTEGER NOT NULL, После пересчета статистики, первый запрос и правда стал давать нормальный план PLAN JOIN (CR INDEX (PK_CONT_RES), CT INDEX (RDB$PRIMARY13)) Но если в него поставить cr.resource is null то один фиг получаем полное чтение CONT_RES по индексу Без кол-ва записей в таблицах и селективности индексов гадать бесполезно. В обеих по 1747 записей И тут же получаем полное индексированное чтение CONT_RES Так полное или индексированное? По индексу, но количество чтений=количеству записей в таблице CONT_RES.RESOURCE определен как NOT NULL, и входит в первичный ключ. Почему сразу не понять, что читать ничего не надо? А если ты удалишь PK и понапихаешь нуллов, когда запрос уже отпрепарирован и считает, что читать нуллы не надо? :-) Была бы сермяжная правда в твоих словах, если бы при попытке удалить PK использующийся в препарированном запросе, не получал бы со 100% вероятностью Object ... in use Так что вы уж или крестик снимите...(с) :) Кроме того, мне казалось что с какой-то версии FB уже умеет искать NULL по индексу
Re: FK и триггеры
On 8 окт, 01:12, Vlad Khorsun hv...@optima.com.ua wrote: Чтобы другие за это время насоздавали ссылок на этот мастер ? :) Хм, да, и так и так плохо получается
Lock Conflict на вставке
Получил тут от Yaffil такое сообщение Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. Lock conflict on no wait transaction. Violation of FOREIGN KEY constraint FK_PAYMENTS_CUST on table PAYMENTS Причем операция была insert into payments(...) Как понять это? Если вставка то при чем тут lock? Если lock то при чем тут foreign key?
Re: FB2.5 на одной БД
On 11 сен, 22:49, Oleg Matveyev o_matv...@mail.ru wrote: читай ключи instsvc Usage: instsvc i[nstall] [ -s[uperserver]* | -c[lassic] | -m[ultithreaded] ] т.е. либо-либо. по дефолту - супер. Понял, спасибо! Меня инсталлятор с толку сбил, он только два варианта предлагал
FB 2.1 и отвалившийся XNET
Жил себе FB 2.1.0.17798, и вдруг случилось страшное: клиенты которые были подключены по локальному соединению отвалились. В логе сервера написано ADMIN (Server) Sat Sep 12 00:27:56 2009 XNET error: Server initialization failed ADMIN (Server) Sat Sep 12 00:27:57 2009 Database: ADMIN (Client) Sat Sep 12 00:27:59 2009 XNET error: Server shutdown detected И дальнейшие локальные подключения не проходят - unavailable databse. По сети - все ок Исправлялось ли что-то подобное в новых сборках?
Re: 3 самые большие проблемы с Firebird
Если начинает казаться что с FB есть проблемы, нужно некоторое время поработать с ораклом. Проблемы исчезнут
Re: Проблема при переходе на 2.1
У меня такое было из-за присвоение new.*=.. в after-триггере
FB 2.1 Странности с уникальностью
Есть пустая таблица CREATE TABLE KLADR_ZIP ( ZIP INTEGER NOT NULL, KLADR_ID BIGINT NOT NULL, HOUSESVARCHAR(50) ); ALTER TABLE KLADR_ZIP ADD CONSTRAINT PK_KLADR_ZIP PRIMARY KEY (ZIP, KLADR_ID); Хотим ее заполнить таким запросом: insert into kladr_zip (zip, kladr_id) select distinct trim(zip) zip, substring(kladr from 1 for 2)|| substring(kladr from 4 for 12) name from DOMA.DBF union select distinct zip, kladr_id name from kladr where zip is not null И неожиданно получаем фигвам в виде Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values. violation of PRIMARY or UNIQUE KEY constraint PK_KLADR_ZIP on table KLADR_ZIP. Хотя вроде как оба запрос distinct и union между ними страхует от повторяющихся записей. Ладно, фиг с тобой золотая рыбка, напишем так: insert into kladr_zip (zip, kladr_id) select distinct zip, name from ( select distinct trim(zip) zip, substring(kladr from 1 for 2)|| substring(kladr from 4 for 12) name from DOMA.DBF union select distinct zip, kladr_id name from kladr where zip is not null ) И получаем то же самое в той же проекции. Интересно, это у меня что-то с головой, или у сервера? WI-V2.1.0.17798 Firebird 2.1
Re: FB 2.1 Странности с уникальностью
On 11 июн, 20:43, Vlad Khorsun [EMAIL PROTECTED] wrote: Как думаешь, '0001' и '1' - разные значения для INT ? А для CHAR ? Точно, спасибо! Опять я торможу...
Ошибка при апгрейде на 2.1
Есть Яффиловская база. Восстановлена из бакапа под 2.1 Подсоединяюсь экспертом с WIN1251. Естественно получаю ошибку. Выполняю скрипт апгрейда метаданных создающие процедуры - ок. Переконнект. Опять ошибка, что нормально. Выполняю select * from rdb$fix_metadata('WIN1251') и делаю полный фетч. Все ок Нажимаю коммит - получаю: Cannot commit transaction: This column cannot be updated because it is derived from an SQL function or expression. attempted update of read-only column. Хоть бы понять где искать, а то список объектов немаленький выдается Интересно, что на других аналогичных базах все проходило нормально
Re: Ошибка при апгрейде на 2.1
On 28 май, 22:05, Vlad Khorsun [EMAIL PROTECTED] wrote: Сними скрипт метаданных и прогони его на новой БД. С автокоммитом, есс-но. Спасибо, действительно так надо было. Но уже нашел последовательным удалением Оказалось сам дурак - присваивание в after-триггере
Re: Стабильное падение FB2.1
= :p) Смайлик неправильный, вот сервер и падает
Re: перход с Yaffil на Firebird2.0
On 24 дек, 14:57, A7exander [EMAIL PROTECTED] wrote: при восстановлении из бэкапа ругалось почемуто на эту функцию в триггере, хотя в запросах работала нормально, но так как это была не фатальная потеря, и использовалось всего в одном месте решил что проще обойтись. Просто надо закомментировать триггер, а после восстановления раскомментировать и перекомпилить
Re: Рабочие fbclient и gds32
On 22 дек, 15:16, Vladimir A.Bakhvaloff [EMAIL PROTECTED] wrote: А вот как ты думал - файлы msvc*80.dll и Microsoft.VC80.CRT.manifest, наверное, просто так в моём архиве валяются, для красоты?.. ;))) А я никак не думал. В 2.0 лежали от 7, и ничего с ними дополнительно делать не надо было. На мой взгляд, readme и существуют чтобы давать осмысленную информацию о наиболее важных для использования изменениях.
Re: Рабочие fbclient и gds32
instclient Попробовал. То же самое. А разве он не просто копирует fbclient в system32? Нет А что еще делает? А то мне свой инсталлятор адаптировать Везде ! Или ты только свои ветки тут читаешь ? Чего на конференции не спросил ? :) Читаю, конечно. Но с тех пор как стал опять читать конфу, такой информации не видел На конференции не спросил, т.к. клиент от 2.0 работал, и я думал что это глюк конкретной сборки 2.1
Re: Рабочие fbclient и gds32
On 21 дек, 22:53, Vlad Khorsun [EMAIL PROTECTED] wrote: Версию патчит на лету. Дабы сервис апи в ибх работал. Всё это есть в релиз нотах к той версии, в которой он появился (1.5) А, сорри, я 1.5 не использовал А поиск ?! Еще бы понять что искать Поиск по Cannot load library не дает результатов Глюки бывают, я не спорю. Но ты умудряешься так формулировать свои вопросы, что моментально хочется выть\рычать\кусаться :) Вот возьми и прочитай еще раз первое письмо в этой ветке. Моими глазами :) С одной стороны понимаю и извиняюсь :) с другой, я уже два раза поднимал этот вопрос в двух ветках http://groups.google.com/group/ru-firebird/browse_thread/thread/a018875680fa2770/e6e979db1c78f0f7?lnk=gstq=Cannot+load+library# http://groups.google.com/group/ru-firebird/browse_thread/thread/63817fb829f76a60 и никто про рантайм не написал. Я и решил что дефект конкретной сборки. Так как клиент от 2.0 работал PS Я уже устал рассказывать про этот долбанный рантайм ... Так надо не рассказывать а включить в readme
Рабочие fbclient и gds32
Вопрос к разработчикам FB - когда в снэпшотах 2.1 появятся работоспособные fbclient.dll и gds32.dll?
Re: Рабочие fbclient и gds32
On 20 дек, 19:38, Vlad Khorsun [EMAIL PROTECTED] wrote: Александр Свириденков ... fbclient - ты снапшот Бахвалова пробовал ?http://bakh.spb.ru/Download/FB/ Да, то же самое. gds32 - никогда ну переименованное fbclient, хотя в снапшоте Бахвалова и gds32 какой- то лежит И в чём, собственно, не работоспособность ? все приложения пишут Cannot load library fbclient.dll (gds32.dll)
Re: Рабочие fbclient и gds32
On 20 дек, 22:18, Vlad Khorsun [EMAIL PROTECTED] wrote: Александр Свириденков ... instclient Попробовал. То же самое. А разве он не просто копирует fbclient в system32? Рантайм от msvc8 нужно установить. Официальным инсталлятором, а не как попало. Уже двести сорок восемь раз везде разжёвано... Официальный инсталлятор на microsoft.com искать? И где разжевано? В readme снапшотов - нет, в readme_INSTALLATION - нет, в описании на странице снапшотов - нет. Где находятся эти 248 раз?
Re: Рабочие fbclient и gds32
После установки MSVC действительно заработало, спасибо! Но что получается, теперь по всем клиентам его надо ставить? Как-то некрасиво получается, неужели нельзя как раньше одной библиотекой обойтись?
Re: Мистика с подключением на другой порт
On 11 дек, 08:09, Dmitry Yemanov [EMAIL PROTECTED] wrote: При попытке использовать последний fbclient переименованный в gds32, приложения пишут при запуске Can't load library gds32.dll А если сгенерить gds32 через instclient? А не работает даже сам fbclient новый. Я об этом уже писал как-то
Re: Мистика с подключением на другой порт
On 7 дек, 22:10, Dmitry Yemanov [EMAIL PROTECTED] wrote: Везде последний fbclient (возможно переименованный в gds32) и последний msg-файл. Разве этого не хватает? Наверное хватает Но проверить не могу :) При попытке использовать последний fbclient переименованный в gds32, приложения пишут при запуске Can't load library gds32.dll
Re: Мистика с подключением на другой порт
On 7 дек, 17:54, Alexey Popov [EMAIL PROTECTED] wrote: Dmitry Yemanov wrote: Дайте ему нормальный fbclient и особенно firebird.msg. А почему в влинковать внутрь? Сей вопрос задавался безуспешно не один раз :) У меня вот так и неполучилось подобрать комбинацию fbserver, fbclient, gds32 и .msg при которой сообщения на всех клиентах выдаются корректно.
Re: On disk Error
Думаю то, что база уже не совсем база
Реальный мониторинг производительности 2.1
А правильно ли я понимаю, что несмотря на введение таблиц мониторинга и DB триггеров, сделать на уровне сервера реальный лог вида дата, пользователь, SQL, время выполнения пока нельзя?
Re: Реальный мониторинг производительности 2.1
Нашел jrd/ntrace.h, но reference implementation из описание нигде не видать
Re: Реальный мониторинг производительности 2.1
On 4 дек, 21:04, Dmitry Yemanov [EMAIL PROTECTED] wrote: Александр Свириденков wrote: Нашел jrd/ntrace.h, но reference implementation из описание нигде не видать Нет его. Предварительно ожидается в 2.5. Как жаль. А то уже и плагин соорудил, сижу пытаюсь понять почему сервер его не грузит (
Re: Падение 2.1
М-да, а ларчик просто открывался. В UDF IsMultiThread:=true; Интересно почему оно в Yaffil работало без проблем, видимо он менее параллельный
Re: CTE в Update
On 29 нояб, 11:31, Vlad Khorsun [EMAIL PROTECTED] wrote: Лучший способ - MERGE : Спасибо! Сейчас попробую
Re: CTE в Update
Выяснились забавные вещи. Если использовать параметры вида field=:param то последний IBExpert выполнять такой запрос отказывается, говорит Column unknown param Заменяем :param на ?, получаем новую ошибку - data type unknown. Делаем cast(? as ...), получаем SQLDA missing or incorrect version, or incorrect number/type of variables. Ну это уже видимо проблема эксперта, потому как в FIB проходит вариант с cast(:param as ...) Но тут новое огорчение - число измененных записей всегда равно 0.
Re: CTE в Update
А насчет число измененных записей - посмотрел, FIB виноват но косвенно. Дело в том что сервер возвращает для Merge как в примере тип SQLInsert, хотя там только Update. Соответсвенно и RowsAffected берет из вставленных а не измененных. Даже не знаю кто тут больше виноват
Re: message файл в 2
On 29 нояб, 20:20, Vlad Khorsun [EMAIL PROTECTED] wrote: В реестре fb зарегистрирован ? ИБЕ пользует правильный fbclient ? Да, проверяю на сервере. fbclient-ов два, в /FB/Bin и /system32, одинаковые
Re: Падение 2.1
Запустил как приложение с -а, падает молча, watson не пишет. Запутил как сервис от текущего экк., то же самое. Что делать?
Re: Падение 2.1
On 30 нояб, 00:19, Vlad Khorsun [EMAIL PROTECTED] wrote: Значит - не падает, а корректно завершается (с точки зрения ОС). В лог что-то пишет ? Воспроизводимый пример есть ? В лог ничего не пишет. С точки зрения ОС наверное все же не совсем корректно, так как в системные события пишет Служба Firebird Server - DefaultInstance неожиданно прервана. Это произошло (раз): 1. Падение воспроизводится, но непростым путем. Попробую сделать более простой пример
CTE в Update
В RN написано что нерекурсивные CTE могут иcпользоваться в подзапросах Update/Insert/Delete. А что насчет рекурсивных? И какой тогда синтаксис? На with recursive a as (...) update ... ругается на update ... where .. in (with recursive ...) тоже
Re: К Гуру кода FB - скорость вставки
On 1 нояб, 19:20, Vlad Khorsun [EMAIL PROTECTED] wrote: d) генерить и выполнять не SQL запросы, а BLR - как gbak e) если нет нуллов и блобов - можно попробовать создавать external table's в одном потоке и заливать из них данные в другом - задействуются оба процессора, если все на одной машине крутится. В 2.1 к тому же external table's работают значительно быстрее и не лочатся до дисконнекта Спасибо, вот это идеи интересные! А есть какой-то документ описывающий BLR?
Re: К Гуру кода FB - скорость вставки
On 31 окт, 12:33, WildSery [EMAIL PROTECTED] wrote: On Wed, 31 Oct 2007 03:55:23 +0300, Александр Свириденков [EMAIL PROTECTED] wrote: А что посоветуете покрутить, чтобы добиться максимальной скорости вставки в таблицу без индексов? execute block'ами вставляй. сразу по много инсертов. Мысль интересная, eсли EB можно prepare сделать и параметры подставлять
Re: К Гуру кода FB - скорость вставки
On 31 окт, 11:13, Sergey Mereutsa [EMAIL PROTECTED] wrote: Ну я не гуру, но если бы ты рассказал, какие именно данные ты вставляешь и показал бы конфиг сервера и рассказал бы под какой операционкой и как именно вставляешь... Ну ты понял? ;-) Данные - таблица с парой десятков полей, половина integer половина varchar разной длинны. Конфиг по умолчанию за исключением того что написал, вставляю подготовленным запросом, на API, оптимизировано все максимально, по профайлеру несколько % от общего времени. Операционки разные win, в основном 2003 P/S У меня в тестах 46М записей вставляется 2 часа на конфиге по умолчанию. В 2.1 :) Хм, у меня все же чуть медленнее получается
Re: К Гуру кода FB - скорость вставки
On 31 окт, 13:23, freemanzav [EMAIL PROTECTED] wrote: Мысль интересная, eсли EB можно prepare сделать и параметры подставлять Смысл тогда теряется. Не понял, почему?
Re: К Гуру кода FB - скорость вставки
On 31 окт, 17:46, Alexey Abramov [EMAIL PROTECTED] wrote: Если без индексов - то можно подумать в сторону внешних таблиц. это уже быстрее. Не, индексы обязательно нужны
К Гуру кода FB - скорость вставки
Добрый день! А что посоветуете покрутить, чтобы добиться максимальной скорости вставки в таблицу без индексов? Смущает что загрузки процессора (одного из двух) больше 40-50% добиться на вставке не удается, и диск особо не жужжит. FW выключен, MaxUnflushedWrites и MaxUnflushedWriteTime увеличил, подключение локальное
Re: Подготовленный запрос с in
On 29 окт, 10:13, freemanzav [EMAIL PROTECTED] wrote: Можно ещё джойнить с ХП, которая парсит строку :v Спасибо, попробую
Подготовленный запрос с in
Приветствую уважаемое сообщество! Есть запрос c условием вида id in (v1, v2..vn). Есть ли в FB возможность написать его так, чтобы подготовив один раз выполнять с разными наборами значений v (в том числе и по количеству) Понятно что есть вариант вида :v containing ','||id||',' , но в этом случае не используется индекс по id, и затея теряет смысл. Можно еще заготовить подготовленных запросов на разное число переменных, но как-то это неаккуратненько
Re: FB 2.1 не показывает параметры ошибок
On 27 окт, 19:47, Dmitry Yemanov [EMAIL PROTECTED] wrote: Значит, fbclient от другой :-) Однозначно, клиент не совпадает версией с msg-файлом. Спасибо, ты оказался прав. Хотя на самом деле все интереснее. fbclient и firebird.msg были от одной версии - 2.1 а вот gds32 от 2.0.3, т.к. создание ее через instclient из 2.1 дает нерабочую библиотеку. Но я думал что gds только транслирует вызовы в fbclient, а оказывается ее версия тоже влияет. Замена всего на 2.0.3 исправила ситуацию
Re: FB 2.1 не показывает параметры ошибок
On 27 окт, 23:46, Dmitry Yemanov [EMAIL PROTECTED] wrote: а вот gds32 от 2.0.3, т.к. создание ее через instclient из 2.1 дает нерабочую библиотеку Вот это интересно. Должна быть рабочая :-) Тем не менее. Пробовал на двух машинах. После этого приложения пишут cannot load library gds32.dll
Re: FB 2.1 Двойной list теряет кодировку
On 26 окт, 13:17, Dmitry Yemanov [EMAIL PROTECTED] wrote: Александр Свириденков wrote: А ты доку по апгрейду читал или обошелся дефолтным b/r? Последнего мало, надо еще и метаданные корректировать, скрипт к дистру прилагается. А, вот как, не заметил, спасибо. Хотя RN и остальное что в /doc/ смотрел. А где искать?
Re: FB 2.1 Двойной list теряет кодировку
Почему не подключишься? Ошибки пишет, по системным запросам Результат работы LIST - это блоб. Видимо, он в кодировке подключения должен получится. А ты его потом ещё раз... Если я подключаюсь с none, он вообще не должен перекодировок делать
FB 2.1 Двойной list теряет кодировку
Поле A в win1251, подключаюсь с charset none (с другим в IBE и не подключишься). Теперь если сделать запрос вида select ... (select list(A) from ...) то все ок. А если вида select ... list((select list(A) from ...)) то русские буквы превращаются в точки. Понятно, что если написать list((select list(A) from ...) collate win1251) то все опять ок, но разве это нормально?
Re: Удаление таблицы
On 19 окт, 09:28, Serge Buzadzhy [EMAIL PROTECTED] wrote: Подвох. QU.FreeHandle; Забыл написать - стоит в Options qoFreeHandleAfterExecute. Не помогает
Re: Группировка по коррелированному подзапросу
On 19 окт, 10:59, WildSery [EMAIL PROTECTED] wrote: Ты вот сам подумай - а какое значение для t1.id должно передаваться в коррелированный подзапрос? Если бы ты его сверху ещё в агрегат завернул - тут ясно, а в таком виде... Очевидно какое - свое для каждой строки t. Затем вычисляется результат подзапроса, и по нему группируется Группировка обязательна по всем используемым из t1 полям, не завёрнутых в агрегат ;) Это откуда следует? Группировка обязательна по всем неагрегируемым коррелированным полям запроса, а я и указал group by 1,3
Re: Удаление таблицы
On 19 окт, 11:15, Мадорский Г.В. [EMAIL PROTECTED] wrote: Подвох. QU.FreeHandle; Привет. Вот ради интересу попробовал на последней версии FB2.0 и своих IBX : Все работает. А не может быть такого, что Fib-ы втихаря в другой транзакции чего-нибудь из метаданных про эту табличку вытягивают и к моменту drop table эта другая транзакция еще активна? Может это потому что в 1 Query? В FIB как выяснилось если FreeHandle принудительно сделать, тоже работает
Re: Удаление таблицы
On 19 окт, 09:28, Serge Buzadzhy [EMAIL PROTECTED] wrote: Подвох. QU.FreeHandle; Кстати, а с принудительным FreeHandle прошло. Значит Options не срабатывают?
Re: Группировка по коррелированному подзапросу
On 19 окт, 10:52, Khorsun Vlad [EMAIL PROTECTED] wrote: group by a, id попробуй Да, так работает. А все же не предполагается делать группировку по всему подзапросу? А так как-то неизящно
Re: Удаление таблицы
Проверил на FB 2.02 - то же самое. Кочмин Александр - спасибо за содержательный ответ
Re: Удаление таблицы
Проверил на FB 2.02 - то же самое. Значит что-то её держит То есть так не должно быть? Но тест сделал самый простой. На FIBPlus: QU.Transaction.StartTransaction; QU.SQL.Text:='select * from test'; QU.ExecQuery; QU.Close; QU.Transaction.Commit; Q.Transaction.StartTransaction; Q.SQL.Text:='drop table test'; Q.ExecQuery; Q.Transaction.Commit; В чем может быть подвох?
Re: Удаление таблицы
посмотри лучше в FB 2.1 GTT и не мучай лишний раз базу убийствами таблиц. Александр, спасибо за еще один содержательный ответ. Но если бы я хотел узнать как можно обойтись без удаления таблиц, или временными таблицами, я бы именно так и спросил.
Группировка по коррелированному подзапросу
В FB2 запрос вида select a, sum(b), (select c from t2 where t2.id=t1.id) from t1 group by 1, 3 Выдает ошибку (group by 1 тоже) а в yaffil прекрасно отрабатывается. Это так и должно быть, или ошибка?
Re: Удаление таблицы
On 19 окт, 01:59, Dmitri Kuzmenko [EMAIL PROTECTED] wrote: Hello, Александр! ты как с луны свалился, если это ты. Кстати, подвигла на выяснение такая проблема. Иногда получаются подвисшие соединения (в Yaffil) Уже и все приложения использующие БД закрыты (все транзакции nowait), и в конфиге LOCK_TIMEOUT и DEADLOCK_TIMEOUT прописаны небольшие, а при попытке (из заново запущенной программы) удалить таблицу пишет .. cannot delete rdb$index_segment А иногда вообще на удалении подвисает надолго (еще раз напоминаю - все nowait)
Re: Удаление таблицы
On 19 окт, 01:59, Dmitri Kuzmenko [EMAIL PROTECTED] wrote: ты как с луны свалился, если это ты. после перед удалением таблицы надо сделать дисконнект. Т.е. чтобы она не сидела в кэше метаданных. грубо говоря, удаление неиспользуемых объектов это монопольная операция. Я это, я :) Просто раньше и делал с дисконнектом, а теперь вопрос заинтересовал. В принципе, по логике то должно в рамках транзакции работать (кстати, надо будет на других серверах проверить) В общем жаль что оно так, был бы хоть способ этот кэш сбрасывать без дисконнекта