Множественные апдейты одной записи

2011-02-07 Пенетрантность Александр Свириденков
Где-то мне попадалось что сильно ускоряли множественные апдейты одной
записи в 2.5, или ошибаюсь?
Есть древовидная таблица с триггером after delete типа update parent
set childs=childs-1
В ней 3000 записей.
Если удалять с отключенным триггером, меньше секунды, с включенным 20
минут.
Как-то многовато?

FB 2.5 последний

Re: Странный план в 2.5.0.26074

2011-01-15 Пенетрантность Александр Свириденков
Т.е. речь про:

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

2011-01-14 Пенетрантность Александр Свириденков
Есть две таблицы,
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

2011-01-14 Пенетрантность Александр Свириденков
Типы данных какие? Статистика свежая?

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 и триггеры

2009-10-07 Пенетрантность Александр Свириденков


On 8 окт, 01:12, Vlad Khorsun hv...@optima.com.ua wrote:
 Чтобы другие за это время насоздавали ссылок на этот мастер ? :)

Хм, да, и так и так плохо получается

Lock Conflict на вставке

2009-09-11 Пенетрантность Александр Свириденков
Получил тут от 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 на одной БД

2009-09-11 Пенетрантность Александр Свириденков


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

2009-09-11 Пенетрантность Александр Свириденков
Жил себе 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

2009-05-21 Пенетрантность Александр Свириденков
Если начинает казаться что с FB есть проблемы, нужно некоторое время
поработать с ораклом.
Проблемы исчезнут

Re: Проблема при переходе на 2.1

2008-06-20 Пенетрантность Александр Свириденков
У меня такое было из-за присвоение new.*=.. в after-триггере

FB 2.1 Странности с уникальностью

2008-06-11 Пенетрантность Александр Свириденков
Есть пустая таблица

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 Странности с уникальностью

2008-06-11 Пенетрантность Александр Свириденков


On 11 июн, 20:43, Vlad Khorsun [EMAIL PROTECTED] wrote:

 Как думаешь, '0001' и '1' - разные значения для INT ? А для CHAR ?


Точно, спасибо!
Опять я торможу...

Ошибка при апгрейде на 2.1

2008-05-28 Пенетрантность Александр Свириденков
Есть Яффиловская база.
Восстановлена из бакапа под 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

2008-05-28 Пенетрантность Александр Свириденков


On 28 май, 22:05, Vlad Khorsun [EMAIL PROTECTED] wrote:

 Сними скрипт метаданных и прогони его на новой БД.
 С автокоммитом, есс-но.

Спасибо, действительно так надо было. Но уже нашел последовательным
удалением
Оказалось сам дурак - присваивание в after-триггере

Re: Стабильное падение FB2.1

2008-05-14 Пенетрантность Александр Свириденков


 = :p)

Смайлик неправильный, вот сервер и падает

Re: перход с Yaffil на Firebird2.0

2007-12-24 Пенетрантность Александр Свириденков


On 24 дек, 14:57, A7exander [EMAIL PROTECTED] wrote:
 при восстановлении из бэкапа ругалось почемуто на эту функцию в
 триггере,
 хотя в запросах работала нормально, но так как
 это была не фатальная потеря, и использовалось всего в одном месте
 решил что проще обойтись.

Просто надо закомментировать триггер, а после восстановления
раскомментировать и перекомпилить

Re: Рабочие fbclient и gds32

2007-12-23 Пенетрантность Александр Свириденков


On 22 дек, 15:16, Vladimir A.Bakhvaloff [EMAIL PROTECTED] wrote:
 А вот как ты думал - файлы msvc*80.dll и Microsoft.VC80.CRT.manifest, 
 наверное, просто так в моём архиве валяются, для красоты?.. ;)))

А я никак не думал. В 2.0 лежали от 7, и ничего с ними дополнительно
делать не надо было.
На мой взгляд, readme и существуют чтобы давать осмысленную информацию
о наиболее важных для использования изменениях.

Re: Рабочие fbclient и gds32

2007-12-21 Пенетрантность Александр Свириденков
  instclient

  Попробовал. То же самое. А разве он не просто копирует fbclient в
  system32?

 Нет

А что еще делает? А то мне свой инсталлятор адаптировать


 Везде ! Или ты только свои ветки тут читаешь ? Чего на конференции не 
 спросил ? :)

Читаю, конечно. Но с тех пор как стал опять читать конфу, такой
информации не видел
На конференции не спросил, т.к. клиент от 2.0 работал, и я думал что
это глюк конкретной сборки 2.1


Re: Рабочие fbclient и gds32

2007-12-21 Пенетрантность Александр Свириденков

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

2007-12-20 Пенетрантность Александр Свириденков
Вопрос к разработчикам FB - когда в снэпшотах 2.1 появятся
работоспособные fbclient.dll и gds32.dll?

Re: Рабочие fbclient и gds32

2007-12-20 Пенетрантность Александр Свириденков


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

2007-12-20 Пенетрантность Александр Свириденков


On 20 дек, 22:18, Vlad Khorsun [EMAIL PROTECTED] wrote:
 Александр Свириденков ...

 instclient

Попробовал. То же самое. А разве он не просто копирует fbclient в
system32?

 Рантайм от msvc8 нужно установить. Официальным инсталлятором, а не как 
 попало.
 Уже двести сорок восемь раз везде разжёвано...

Официальный инсталлятор на microsoft.com искать?
И где разжевано? В readme снапшотов - нет, в readme_INSTALLATION -
нет, в описании на странице снапшотов - нет.
Где находятся эти 248 раз?


Re: Рабочие fbclient и gds32

2007-12-20 Пенетрантность Александр Свириденков
После установки MSVC действительно заработало, спасибо!
Но что получается, теперь по всем клиентам его надо ставить?
Как-то некрасиво получается, неужели нельзя как раньше одной
библиотекой обойтись?


Re: Мистика с подключением на другой порт

2007-12-12 Пенетрантность Александр Свириденков


On 11 дек, 08:09, Dmitry Yemanov [EMAIL PROTECTED] wrote:
  При попытке использовать последний fbclient переименованный в gds32,
  приложения пишут при запуске Can't load library gds32.dll

 А если сгенерить gds32 через instclient?

А не работает даже сам fbclient новый. Я об этом уже писал как-то

Re: Мистика с подключением на другой порт

2007-12-10 Пенетрантность Александр Свириденков


On 7 дек, 22:10, Dmitry Yemanov [EMAIL PROTECTED] wrote:
 Везде последний fbclient (возможно переименованный в gds32) и последний
 msg-файл. Разве этого не хватает?

Наверное хватает
Но проверить не могу :)
При попытке использовать последний fbclient переименованный в gds32,
приложения пишут при запуске Can't load library gds32.dll

Re: Мистика с подключением на другой порт

2007-12-07 Пенетрантность Александр Свириденков


On 7 дек, 17:54, Alexey Popov [EMAIL PROTECTED] wrote:
 Dmitry Yemanov wrote:
  Дайте ему нормальный fbclient и особенно firebird.msg.

 А почему в влинковать внутрь?

Сей вопрос задавался безуспешно не один раз :)
У меня вот так и неполучилось подобрать комбинацию fbserver, fbclient,
gds32 и .msg при которой сообщения на всех клиентах выдаются корректно.

Re: On disk Error

2007-12-04 Пенетрантность Александр Свириденков
Думаю то, что база уже не совсем база

Реальный мониторинг производительности 2.1

2007-12-04 Пенетрантность Александр Свириденков
А правильно ли я понимаю, что несмотря на введение таблиц мониторинга
и DB триггеров, сделать на уровне сервера реальный лог вида
дата, пользователь, SQL, время выполнения
пока нельзя?


Re: Реальный мониторинг производительности 2.1

2007-12-04 Пенетрантность Александр Свириденков
Нашел jrd/ntrace.h, но reference implementation из описание нигде не
видать

Re: Реальный мониторинг производительности 2.1

2007-12-04 Пенетрантность Александр Свириденков

On 4 дек, 21:04, Dmitry Yemanov [EMAIL PROTECTED] wrote:
 Александр Свириденков wrote:
  Нашел jrd/ntrace.h, но reference implementation из описание нигде не
  видать

 Нет его. Предварительно ожидается в 2.5.

Как жаль. А то уже и плагин соорудил, сижу пытаюсь понять почему
сервер его не грузит (

Re: Падение 2.1

2007-12-01 Пенетрантность Александр Свириденков

М-да, а ларчик просто открывался.
В UDF IsMultiThread:=true;
Интересно почему оно в Yaffil работало без проблем, видимо он менее
параллельный




Re: CTE в Update

2007-11-29 Пенетрантность Александр Свириденков


On 29 нояб, 11:31, Vlad Khorsun [EMAIL PROTECTED] wrote:
 Лучший способ - MERGE :

Спасибо! Сейчас попробую

Re: CTE в Update

2007-11-29 Пенетрантность Александр Свириденков
Выяснились забавные вещи.
Если использовать параметры вида 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

2007-11-29 Пенетрантность Александр Свириденков

А насчет число измененных записей - посмотрел, FIB виноват но
косвенно. Дело в том что сервер возвращает для Merge как в примере тип
SQLInsert, хотя там только Update.
Соответсвенно и RowsAffected берет из вставленных а не измененных.
Даже не знаю кто тут больше виноват

Re: message файл в 2

2007-11-29 Пенетрантность Александр Свириденков


On 29 нояб, 20:20, Vlad Khorsun [EMAIL PROTECTED] wrote:

 В реестре fb зарегистрирован ? ИБЕ пользует правильный fbclient ?

Да, проверяю на сервере. fbclient-ов два, в /FB/Bin и /system32,
одинаковые

Re: Падение 2.1

2007-11-29 Пенетрантность Александр Свириденков
Запустил как приложение с -а, падает молча, watson не пишет. Запутил
как сервис от текущего экк., то же самое.
Что делать?

Re: Падение 2.1

2007-11-29 Пенетрантность Александр Свириденков


On 30 нояб, 00:19, Vlad Khorsun [EMAIL PROTECTED] wrote:
 Значит - не падает, а корректно завершается (с точки зрения ОС).
 В лог что-то пишет ? Воспроизводимый пример есть ?

В лог ничего не пишет. С точки зрения ОС наверное все же не совсем
корректно, так как в системные события пишет

Служба Firebird Server - DefaultInstance неожиданно прервана. Это
произошло (раз): 1.

Падение воспроизводится, но непростым путем. Попробую сделать более
простой пример

CTE в Update

2007-11-28 Пенетрантность Александр Свириденков
В RN написано что нерекурсивные CTE могут иcпользоваться в подзапросах
Update/Insert/Delete.
А что насчет рекурсивных? И какой тогда синтаксис?

На
with recursive a as (...) update ... ругается
на update ... where .. in (with recursive ...) тоже

Re: К Гуру кода FB - скорость вставки

2007-11-02 Пенетрантность Александр Свириденков



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 - скорость вставки

2007-10-31 Пенетрантность Александр Свириденков



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 - скорость вставки

2007-10-31 Пенетрантность Александр Свириденков


On 31 окт, 11:13, Sergey Mereutsa [EMAIL PROTECTED] wrote:
 Ну я не гуру, но если бы ты рассказал, какие именно данные ты
 вставляешь и показал бы конфиг сервера и рассказал бы под какой
 операционкой и как именно вставляешь... Ну ты понял? ;-)

Данные - таблица с парой десятков полей, половина integer половина
varchar разной длинны.
Конфиг по умолчанию за исключением того что написал, вставляю
подготовленным запросом, на API, оптимизировано все максимально,
по профайлеру несколько % от общего времени. Операционки разные win, в
основном 2003

 P/S У меня в тестах 46М записей вставляется 2 часа на конфиге по
 умолчанию. В 2.1 :)

Хм, у меня все же чуть медленнее получается



Re: К Гуру кода FB - скорость вставки

2007-10-31 Пенетрантность Александр Свириденков



On 31 окт, 13:23, freemanzav [EMAIL PROTECTED] wrote:
  Мысль интересная, eсли EB можно prepare сделать и параметры подставлять

 Смысл тогда теряется.

Не понял, почему?



Re: К Гуру кода FB - скорость вставки

2007-10-31 Пенетрантность Александр Свириденков



On 31 окт, 17:46, Alexey Abramov [EMAIL PROTECTED]
wrote:
 Если без индексов - то можно подумать в сторону внешних таблиц.
 это уже быстрее.

Не, индексы обязательно нужны



К Гуру кода FB - скорость вставки

2007-10-30 Пенетрантность Александр Свириденков

Добрый день!
А что посоветуете покрутить, чтобы добиться максимальной скорости
вставки в таблицу без индексов?
Смущает что загрузки процессора (одного из двух) больше 40-50%
добиться на вставке не удается, и диск особо не жужжит.
FW выключен, MaxUnflushedWrites и MaxUnflushedWriteTime увеличил,
подключение локальное



Re: Подготовленный запрос с in

2007-10-29 Пенетрантность Александр Свириденков



On 29 окт, 10:13, freemanzav [EMAIL PROTECTED] wrote:
 Можно ещё джойнить с ХП, которая парсит строку :v

Спасибо, попробую



Подготовленный запрос с in

2007-10-28 Пенетрантность Александр Свириденков

Приветствую уважаемое сообщество!
Есть запрос c условием вида id in (v1, v2..vn).
Есть ли в FB возможность написать его так, чтобы подготовив один раз
выполнять с разными наборами значений v (в том числе и по количеству)
Понятно что есть вариант вида :v containing ','||id||',' , но в этом
случае не используется индекс по id, и затея теряет смысл.
Можно еще заготовить подготовленных запросов на разное число
переменных, но как-то это неаккуратненько



Re: FB 2.1 не показывает параметры ошибок

2007-10-27 Пенетрантность Александр Свириденков


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 не показывает параметры ошибок

2007-10-27 Пенетрантность Александр Свириденков



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 теряет кодировку

2007-10-26 Пенетрантность Александр Свириденков



On 26 окт, 13:17, Dmitry Yemanov [EMAIL PROTECTED] wrote:
 Александр Свириденков wrote:
 А ты доку по апгрейду читал или обошелся дефолтным b/r? Последнего мало,
 надо еще и метаданные корректировать, скрипт к дистру прилагается.

А, вот как, не заметил, спасибо. Хотя RN и остальное что в /doc/
смотрел.
А где искать?



Re: FB 2.1 Двойной list теряет кодировку

2007-10-26 Пенетрантность Александр Свириденков



 Почему не подключишься?

Ошибки пишет, по системным запросам

 Результат работы LIST - это блоб. Видимо, он в кодировке подключения должен 
 получится. А ты его потом ещё раз...

Если я подключаюсь с none, он вообще не должен перекодировок делать



FB 2.1 Двойной list теряет кодировку

2007-10-25 Пенетрантность Александр Свириденков

Поле A в win1251, подключаюсь с charset none (с другим в IBE и не
подключишься).
Теперь если сделать запрос вида

select ...
(select list(A) from ...)

то все ок. А если вида

select ...
list((select list(A) from ...))

то русские буквы превращаются в точки.
Понятно, что если написать

list((select list(A) from ...) collate win1251)

то все опять ок, но разве это нормально?



Re: Удаление таблицы

2007-10-19 Пенетрантность Александр Свириденков

On 19 окт, 09:28, Serge Buzadzhy [EMAIL PROTECTED] wrote:
 Подвох.
 QU.FreeHandle;

Забыл написать - стоит в Options qoFreeHandleAfterExecute. Не помогает



Re: Группировка по коррелированному подзапросу

2007-10-19 Пенетрантность Александр Свириденков



On 19 окт, 10:59, WildSery [EMAIL PROTECTED] wrote:

 Ты вот сам подумай - а какое значение для t1.id должно передаваться в 
 коррелированный подзапрос?
 Если бы ты его сверху ещё в агрегат завернул - тут ясно, а в таком виде...

Очевидно какое - свое для каждой строки t. Затем вычисляется результат
подзапроса, и по нему группируется

 Группировка обязательна по всем используемым из t1 полям, не завёрнутых в 
 агрегат ;)
Это откуда следует? Группировка обязательна по всем неагрегируемым
коррелированным полям запроса, а я и указал group by 1,3




Re: Удаление таблицы

2007-10-19 Пенетрантность Александр Свириденков



On 19 окт, 11:15, Мадорский Г.В. [EMAIL PROTECTED] wrote:
  Подвох.
  QU.FreeHandle;

 Привет. Вот ради интересу попробовал на последней версии FB2.0 и своих IBX :

 Все работает. А не может быть такого, что Fib-ы втихаря в другой транзакции
 чего-нибудь из метаданных про эту табличку вытягивают и к моменту drop table
 эта другая транзакция еще активна?

Может это потому что в 1 Query? В FIB как выяснилось если FreeHandle
принудительно сделать, тоже работает



Re: Удаление таблицы

2007-10-19 Пенетрантность Александр Свириденков



On 19 окт, 09:28, Serge Buzadzhy [EMAIL PROTECTED] wrote:
 Подвох.
 QU.FreeHandle;

Кстати, а с принудительным FreeHandle прошло. Значит Options не
срабатывают?



Re: Группировка по коррелированному подзапросу

2007-10-19 Пенетрантность Александр Свириденков



On 19 окт, 10:52, Khorsun Vlad [EMAIL PROTECTED] wrote:

 group by a, id попробуй

Да, так работает. А все же не предполагается делать группировку по
всему подзапросу? А так как-то неизящно



Re: Удаление таблицы

2007-10-18 Пенетрантность Александр Свириденков


Проверил на FB 2.02 - то же самое.

Кочмин Александр - спасибо за содержательный ответ



Re: Удаление таблицы

2007-10-18 Пенетрантность Александр Свириденков

  Проверил на 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: Удаление таблицы

2007-10-18 Пенетрантность Александр Свириденков

 посмотри лучше в FB 2.1 GTT
 и не мучай лишний раз базу убийствами таблиц.

Александр, спасибо за еще один содержательный ответ. Но если бы я
хотел узнать как можно обойтись без удаления таблиц, или временными
таблицами, я бы именно так и спросил.



Группировка по коррелированному подзапросу

2007-10-18 Пенетрантность Александр Свириденков

В 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: Удаление таблицы

2007-10-18 Пенетрантность Александр Свириденков



On 19 окт, 01:59, Dmitri Kuzmenko [EMAIL PROTECTED] wrote:
 Hello, Александр!


 ты как с луны свалился, если это ты.

Кстати, подвигла на выяснение такая проблема. Иногда получаются
подвисшие соединения (в Yaffil)
Уже и все приложения использующие БД закрыты (все транзакции nowait),
и в конфиге LOCK_TIMEOUT и DEADLOCK_TIMEOUT прописаны небольшие,
а при попытке (из заново запущенной программы) удалить таблицу
пишет .. cannot delete rdb$index_segment
А иногда вообще на удалении подвисает надолго (еще раз напоминаю - все
nowait)



Re: Удаление таблицы

2007-10-18 Пенетрантность Александр Свириденков

On 19 окт, 01:59, Dmitri Kuzmenko [EMAIL PROTECTED] wrote:

 ты как с луны свалился, если это ты.
 после перед удалением таблицы надо сделать дисконнект.
 Т.е. чтобы она не сидела в кэше метаданных.
 грубо говоря, удаление неиспользуемых объектов это монопольная
 операция.


Я это, я :)
Просто раньше и делал с дисконнектом, а теперь вопрос заинтересовал.
В принципе, по логике то должно в рамках транзакции работать (кстати,
надо будет на других серверах проверить)
В общем жаль что оно так, был бы хоть способ этот кэш сбрасывать без
дисконнекта