Оптимизация и индекс по полю типа DATE - лыжи не едут...

2007-10-20 Thread Vladimir Kozlov


Уважаемые гуру! :)

Столкнулся со странностью.

FB2.1beta2, SQL Dialect 1.

Выполняю запрос:

SELECT *
FROM
fxd$documentmove M,
fxd$document D
WHERE
M.iddocument=D.iddocument
AND D.datewhen<='01-jan-2007'
AND M.idaccd='221.1'

Получаю:

PLAN JOIN (D INDEX (FXD$DOCUMENT_IDX1), M INDEX (FK_FXD_DOCUMENT_1,  
FK_FXD_DOCUMENT_2))


Adapted Plan
PLAN JOIN (D INDEX (FXD$DOCUMENT_IDX1), M INDEX (FK_FXD_DOCUMENT_1,  
FK_FXD_DOCUMENT_2))


-- Performance info --
Prepare time = 0ms
Execute time = 5s 609ms

Выполняю тот же запрос но без одного из условий:

SELECT *
FROM
fxd$documentmove M,
fxd$document D
WHERE
M.iddocument=D.iddocument
--AND D.datewhen<='01-jan-2007'
AND M.idaccd='221.1'

В результате

Plan
PLAN JOIN (M INDEX (FK_FXD_DOCUMENT_2), D INDEX (RDB$PRIMARY7))

Adapted Plan
PLAN JOIN (M INDEX (FK_FXD_DOCUMENT_2), D INDEX (INTEG_27))

-- Performance info --
Prepare time = 0ms
Execute time = 953ms

Вот DDL таблицы fxd$document

create table fxd$document (
iddocumentvarchar(40) not null,
sysdate   date,
datewhen  date,
scomment  varchar(250),
idclass   integer not null,
statusinteger,
seqid integer not null,
iddocumentparent  varchar(40),
docrateusdnumeric(15,4),
docrateeurnumeric(15,4)
);


alter table fxd$document add primary key (iddocument);

alter table fxd$document add constraint fk_document_2 foreign key  
(idclass) references fxd$objclass (idclass);
alter table fxd$document add constraint fk_document_4 foreign key  
(iddocumentparent) references fxd$document (iddocument);


create index fxd$document_idx1 on fxd$document (datewhen);
create index fxd$document_idx2 on fxd$document (iddocument);

то есть индекс по datewhen есть. Думал может индекс не в том направлении -  
попробовал в условии поменять "больше" на "меньше" - такая же фигня.

Статистика индекса fxd$document_idx1 перестроена.

Подскажите, почему у меня лыжи не едут?



Re: Оптимизация и индекс по полю типа DATE - лыжи не едут...

2007-10-21 Thread Vladimir Kozlov


Внешний ключ таблицы fxd$documentmove по полю idaccd - Statistics  
0.016394417

Индекс таблицы fxd$document () по полю datewhen - Statistics 0.83619
Первичный ключ таблицы fxd$document - Statistics 0.83570

Записи в fxd$document (хранят дату и время) распределены примерно  
равномерно с 01-jan-2006 по 01-oct-2007 (данные перелиты IBPump-ом из  
боевой базы Sybase ASA, после чего SET STATISTICS сделано для всего чего  
только можно).


Вот IBExpert какую-то непонятку показывает по команде "Database  
Statistics" на вкладке "Indices" - якобы fxd$document_idx1 создан по полю  
idgoodsgroup (которое вообще в другой таблице находится и никакого  
отношения сюда не имеет) - но подозреваю что он просто дуркует :)


Твой вариант попробовал - ну индекс из плана убрался и стало раз в 10  
быстрее - но чего ж индекс, от которого в принципе надо ждать высокой  
эффективности, такие тормоза жесточайшие за собой тянет?


Куда еще посмотреть можно? На Sybase такой непонятки у меня не было, там  
оптимайзер всё четко разгрызал так как от него и ожидалось).





Ну а селективность индексов показать?


Статистика индекса fxd$document_idx1 перестроена.

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

Предполагаю, что сильно отличается для
индексов FK_FXD_DOCUMENT_1 и  FK_FXD_DOCUMENT_2



Попробуй так:

 SELECT *
 FROM
 fxd$documentmove M,
 fxd$document D
 WHERE
 M.iddocument=D.iddocument
 AND D.datewhen+0<='01-jan-2007'
 AND M.idaccd='221.1'





RDB$PROCEDURE_TYPE и JayBird

2007-10-22 Thread Vladimir Kozlov


Учитывая, что в FB2.1 появилось RDB$PROCEDURE_TYPE - стОит ли ждать  
соответсвующей реакции от JayBird? То есть, чтобы из JDBC можно было  
использовать CallableStatement c возвращающими резалтсет хранимыми  
процедурами, и при этом использовать штатный синтаксис с {"CALL ..."} без  
необходимости кастовать FirebirdCallableStatement?




Re: RDB$PROCEDURE_TYPE и JayBird

2007-10-23 Thread Vladimir Kozlov



загрузки блобов с BLR/исходниками для определения способа вызова
хранимой процедуры.


Как в сценке с нотами у Романа Карцева - "вот тут играем, вот с этого  
места не играем, а тут пятно - это не бемоль, это селёдку заворачивали" :)




GEN_UUID и REVERSE в 2.1

2007-10-23 Thread Vladimir Kozlov


Классические гуиды можно было реверсить и тем самым экономить на индексах  
по ним. Результаты экспериментов с GEN_UUID в 2.1 показывают что гуид  
каждый раз совсем разный, и реверсить его бесполезно.

Я прав?



Re: GEN_UUID и REVERSE в 2.1

2007-10-23 Thread Vladimir Kozlov



угу. вроде начиная с xp он перестал реверсироваться, или даже с w2k.


Жаль. Однако вот сейчас интереса ради глянул в базу Sybase, бегающую под  
Debian 3.1 - там, зараза эдакая, реверсируется...




Re: Напомните плиз FB 1.5 <-> FB 2.0

2007-10-23 Thread Vladimir Kozlov



если поиграть шрифтом, то вообще хрен чего поймешь.
p.s. я не пробовал, это экспромт.


Ну в порядке экспромта - а можно в метаданных имена полей/таблиц в это...  
как его... CHARACTER SET OCTETS ?




Re: По поводу стандарта SQL

2007-10-23 Thread Vladimir Kozlov



Написал баг репорт по поводу того, что POSITION( '' IN '' ) возвращает
единицу вместо нуля.

Андиано послал меня в ... и потыкал опять же меня мордой в стандарт
SQL 2003 в котором говорится - если первая строка имеет нулевую длину,
то возвращаем единицу.


Гы :) Будем использовать метод математической индукции :)

String2 = '' || String1;

Что в начале String2 находится? А как же, '' - мы ж сами его туды добавили  
:) Ну а поскольку String2 == String1 (что легко проверяется эмпирическим  
путём), то методом математической индукции приходим к выводу, что любая  
строка в начале содержит '' :)


PS: а то до пятницы тред уйдет вниз...






Как поставить 2.0 и 2.1 одновременно на Linux?

2007-10-23 Thread Vladimir Kozlov


Как под виндой - дело понятное. Полуторка и двойка на линухе - тоже  
понятно (по портам развести, конфиг у одного в /etc/firebird у другого в  
/etc/firebird2). А с двумя двойками как быть? По портам развести дело  
нехитрое, а как каждой свой конфиг скормить?




Re: Как поставить 2.0 и 2.1 одновременно на Linux?

2007-10-23 Thread Vladimir Kozlov



Под Линухом еще проще - собери с разными путями инсталляции. У меня
один экземпляр в /opt/firebird (1.5), 2.0 - /opt/fb20cs, 2.1 -
/opt/fb21ss/ - надеюсь, идея понятна. Только если будешь собирать
супер - укажи ему сразу другой порт слушать (например, 3052).


Спасибо!



Шиза посетила - как из UDF получить текст заданной хранимой процедуры?

2007-10-24 Thread Vladimir Kozlov


В общем, навеяно SQL.RU - а вот интересно, можно ли в UDF вытащить из  
метаданных базы текст хранимой процедуры?




Re: Шиза посетила - как из UDF получить текст заданной хранимой процедуры?

2007-10-24 Thread Vladimir Kozlov



Вопрос в том, нужно ли это...


Я ж говорю - шиза посетила :)



Re: Шиза посетила - как из UDF получить текст заданной хранимой процедуры?

2007-10-24 Thread Vladimir Kozlov



зачем это делать левой ногой в правом ухе?

Берешь IBExpert. Открываешь RDB$PROCEDURES,
RDB$PROCEDURE_BLR, и View as BLR.
Видишь текст.

То же самое можно и в ISQL, если выставить BLOBDUMP 1 (если правильно  
помню).



ИБЭкспертом и я умею :) а левой ногой в правом ухе для того чтоб в UDF  
цифровую подпись метаданных проверить...




Re: Шиза посетила - как из UDF получить текст заданной хранимой процедуры?

2007-10-24 Thread Vladimir Kozlov


Т.к. проверяешь ты сам из своего клиента, то и передать этот самый блоб  
в UDF тоже не проблема. Ы?


Так в том-то и идея, чтоб блоб в удф не передавать - а чтобы удф сама из  
текущего коннекта в базу слазила и блоб вытащила. Далее проверяется  
цифровая подпись - и результаты работы функций в удф зависят от того  
правильная цифровая подпись или нет.





Re: Шиза посетила - как из UDF получить текст заданной хранимой процедуры?

2007-10-24 Thread Vladimir Kozlov


человек надеется, что проверка целостности будет более надежна, чем если  
передавать блоб. а то кто-то может сохранить старую версию метаданых,  
изменить, а потом передавать старую версию в UDF, которая будет говорить  
- "да, все четко, наша система".


Именно так.

Проблема только в том, что имея доступ к метаданым умный хакер без  
проблем сможет изменить код так, что эта UDF-ка не будет вызыватся  
вообще.


Смотря для чего эта UDF-ка нужна; если в ней содержится код который  
критичен для работы системы - то без ее вызова никак не обойтись.


Хотя это так, баловство, чисто теоретический экзерсис на тему "запереться  
изнутри и ключ в окошко выбросить".
Как показывает практика, от умного хакера все равно не спасешься - даже  
хранение паролей не в isc4.gdb а в самой базе (что, насколько я знаю,  
планируется) - не очень поможет. В SQLAnywhere люди уже научились хэш  
пароля в базе менять hex-редактором на заранее подсчитанный и получать  
DBA; так что от умельца с тюнингованной головой и прямыми руками  
защититься все равно будет проблематично...







Re: OFF: Первые ласточки принудительной Linux-оизации

2007-10-25 Thread Vladimir Kozlov



Все как всегда: грустно. Хорошую идею дискедитировали на корню.
Сценарий один:
1. Достали шашку.
2. Замахнулись.
3. Рубанули с плеча.
А те, кто не успел увернуться скажут, что все было (будет) плохо.


Моисей своих 40 лет по пустыне таскал чтоб от Египта отвыкли... а виндуза  
как и любой десктоп налагает на мозг тяжкое бремя навыков и стереотипов.  
Десктопному юзеру, освоившему только левую кнопку мыши, переходить на  
линух намного легче чем тому кто еще и правой кнопкой пользоваться умеет -  
ибо над ним не довлеют приобретенные шаблоны восприятия.
Среднестатистическому школьному учителю информатики про модули ядра, иксы,  
демоны и прочее объяснять придется долго, чтоб он хоть как-то проникся.


Ну а с нашим подходом - если дороги починить то дураки будут быстрее  
двигаться :) Это не просто взмахи шашкой - это кавалерийская атака на  
танки :)




Re: OFF: Первые ласточки принудительной Linux-оизации

2007-10-25 Thread Vladimir Kozlov



Немая сцена - подошел, убедился, что КДЕ, а не скин к винде.


Ха, я при необходимости работы с виндой навешиваю на нее скин КДЕ-подобный  
:) чтоб хоть как-то горе смягчить :)




Re: OFF: Первые ласточки принудительной Linux-оизации

2007-10-25 Thread Vladimir Kozlov


Среднестатистическому школьному учителю информатики про модули ядра,  
иксы,  демоны и прочее объяснять придется долго, чтоб он хоть как-то  
проникся.


накой хрен ему это надо, простите за прямоту? Или это знания,
без которых невозможно будет запустить OpenOffice?


Дык я о том и говорю. Что ему пофиг на красоты внутренней архитектуры, ему  
хочется навыки работы с виндовым десктопом безболезненно оттрансферить.




Re: OFF: Первые ласточки принудительной Linux-оизации

2007-10-25 Thread Vladimir Kozlov



Их нужно учить работать в том или ином офисе, обучать форматам файлов
(снаружи, а не внутри), простым граф-редакторам и т.п.


В общем, физрук и опохмеленный трудовик справятся ;)


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


Ученикам в школе плевать на устройство операционки, согласен, а вот  
учитель информатики который так и остался мышевозом и не умеет в  
собственном компьютерном классе выполнить простейшие регламентные  
администраторские задачи - должен в этом классе сидеть на задней парте :)




Re: OFF: Первые ласточки принудительной Linux-оизации

2007-10-26 Thread Vladimir Kozlov



я раз в неделю бываю в школе где учился, вижу учителей и их зарплаты


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




Re: OFF: Первые ласточки принудительной Linux-оизации

2007-10-26 Thread Vladimir Kozlov



Их там, в школе, мля, цепями к партам приковали и в кандалы обули!
Только не нужно начинать диспут о "призвании" и "социальной значимости".


Ха. Представь себе очень жизненную ситуацию - 50-летнюю математичку  
вызывает дыректор и говорит "В этом году вы будете преподавать еще и  
информатику" :)



После N-го количества лет работы в нынешней школе, слово "педагог",
плавно трансформируется из профессии в диагноз...
Как ни печально это звучит...


К сожалению, да.


Как бубнил Доренко, "...казалось бы, при чем тут Чубайс?.."


Почитай, что в нашей "маленькой но гордой державе" в "флагмане вышшего  
образования" творится:


http://www.tv7.md/?page=Society&id=7739&lang=ru&list=1



Re: BINARY / VARBINARY

2007-10-26 Thread Vladimir Kozlov



Главное что бы сервер это дело распознавал в CREATE/ALTER-
конструкциях. А дальше - это дело вторичное. Внутрях сервер пусть
продолжает юзать CHAR/VARCHAR.


CREATE DOMAIN ?



Re: BINARY / VARBINARY

2007-10-26 Thread Vladimir Kozlov



CREATE DOMAIN ?



У нас уже появились домены с параметрами ;)


Это не параметр, это вопросительный знак ;-P


PSS. Кстати, насчет доментов, можно я занесу такое предложение в
трекер ? Бугага.


В порядке бугага - уж раз пятница, так лучше тип данных table сделать :)


declare variable var1 table (col1 varchar(100));
begin
insert into var1(col1) values('Пятница');
end;

;)




Растекаясь агрегатами по дереву...

2007-10-28 Thread Vladimir Kozlov


Задача - сборка сумм по древовидному справочнику.

Есть справочник:

1. Расходы
1.1. Вид расходов 1
1.1.1. Статья 1
1.1.2. Статья 2
1.2. Вид расходов 2
1.2.1. Статья 3
1.2.2. Статья 4
...

в нем есть ссылки на самого себя по parent_id, то есть обычная древовидная  
таблица (вложенность произвольная, есть ветки глубиной в 2 а есть в 7).


И есть таблица проводок, где каждая статья (1.1.1, 1.1.2, 1.2.1,  
1.2.2,...) присутсвует в виде субконто по дебету либо кредиту.  
Соответственно, агрегаты по отдельным статьям получаются простеньким  
запросом с group by, а вот как получить "агрегаты агрегатов" по узлам  
дерева? Хочется свести к минимуму шорканье по таблице проводок (то есть  
желательно обработать ее одним проходом).


Пока что как вариант - загнать первоначальные агрегаты во временную  
таблицу (FB 2.1) и в сборке сумм по дереву работать с ней, но может есть  
более элегантное решение?







Re: Растекаясь агрегатами по дереву...

2007-10-29 Thread Vladimir Kozlov



 Делаем join таблицы проводок с этой таблицей по ID элемента и
заданному уровню детализации (параметр запроса). И группируем по
полученному ID предка.


Нужна детализация по всем уровням. Поэтому хочется вначале получить  
derived table с агрегатами нижнего уровня и разложить ее по дереву в один  
проход.




Re: Странная работа запроса на FB 2.0.3

2007-10-29 Thread Vladimir Kozlov



http://tracker.firebirdsql.org/browse/CORE-1549
Завтра будет исправлено.


В ночную сборку 2.1 войдет?



Re: Растекаясь агрегатами по дереву...

2007-10-29 Thread Vladimir Kozlov



А у тебя выбор при проведении документа предусмотрен только
"листьев" (не имеющих потомков) дерева или можно выбрать и
"каталог" (имеющие потомков) ? А то ведь сумма потомков с суммой
"каталога" могут не сойтись.
Я вот с дуру разрешил выбирать "каталоги", так задолбался в отчетах
добавлять к каждому из них несуществующий "лист" с именем "<<не
указано>>"


Разумеется только "листьев". Это ж одним NOT EXISTS в запросе для списка  
выбора решается...


Кстати решил задачу через GTT. То есть первичные агрегаты для листьев  
загоняются в GTT, там около 110 записей получается - то есть сущая мелочь;  
потом эта GTT джойнится со справочником, при этом участвует процедура  
"является ли  узел A потомком узла С", ну и агрегирование. То есть сборка  
дерева таки одним запросом получилась как я и хотел - и еще один запрос  
чтоб подготовить GTT а не джойнить с derived table.




Re: Оцените идею :-)

2007-10-31 Thread Vladimir Kozlov


Отводим каждому дню по биту, и вуаля - объем хранимых данных сокращается  
в 30 раз! Можно пойти еще дальше - если все 12 месяцев запихнуть в одну  
строку в БД, то получается по одной строке на каждый товар в год.


Использование блобов позволит не ограничиваться одним годом.

PS: ;-)




У меня уже пятница, но а вдруг такое будет?

2007-10-31 Thread Vladimir Kozlov


Решил поприкалываться над птичкой - сделал триггер before insert на  
таблицу MON$STATEMENTS. Не, ну понятно что таблица виртуальная и триггер  
не будет работать, но втайне ожидал чуда... =)


И вот что подумалось - а было бы хорошо если б был database trigger на  
препаринг стейтмента. Не, ну почему на старт транзакции есть, а на  
препаринг стейтмента нету? :)




Re: У меня уже пятница, но а вдруг такое будет?

2007-10-31 Thread Vladimir Kozlov



А нафига?


А это моя прописанная в биосе шиза насчет того что хорошо б иметь  
sql-trace как у мелкософта :)




Re: У меня уже пятница, но а вдруг такое будет?

2007-10-31 Thread Vladimir Kozlov



Дык и надо просить sql-trace, а не хрен знает что :-)


А я, как в том анекдоте, издалека начал ;) Присыпал хотелку прелыми  
листьями, но будучи разоблаченным - скажу прямо: хочу sql-trace как у  
мелкософта или профайлер как в SQLAnywhere. Штоб запустить - посмотреть -  
и получить сатори :)




Re: Оцените идею :-)

2007-11-01 Thread Vladimir Kozlov


Кроме того, такое "линейное складирование" крайне излишне - достаточно  
хранить историю изменения остатков.


история изменения остатков - это что? собственно таблица бухпроводок или  
после проведения каждого документа в отдельную табличку инсертится  
строка с новыми остатками?


Я собственно почему спрашиваю... хочется чтоб кто-то покритиковал мою идею:

есть таблица в которой лежат текущие значения остатков товара. Триггер на  
таблицу проводок киляет в ней соответствующую запись но при проведении  
документа новый остаток не пересчитывается - просто убивается запись со  
старым. И есть процедурка - "получить текущий остаток". Соответственно она  
смотрит - есть запись в таблице текущих остатков - достать оттуда  
количество и вернуть; нет записи - посчитать накатом по таблице проводок,  
положить в таблицу остатков и вернуть. Ну и средневзвешенные  
себестоимости, также и фифо - по тому же принципу. Эдакий  
"cache-by-demand" :)


Но есть один недостаток у этой схемы - если нужно перепровести документ  
откуда-то из середины базы, а за ним есть уже проведенные документы -  
тогда засада... приходится считать остатки на дату тупым накатом...




Re: Оцените идею :-)

2007-11-01 Thread Vladimir Kozlov


Кроме того, такое "линейное складирование" крайне излишне - достаточно  
хранить историю изменения остатков.


история изменения остатков - это что? собственно таблица бухпроводок или  
после проведения каждого документа в отдельную табличку инсертится строка  
с новыми остатками?





Re: Оцените идею :-)

2007-11-01 Thread Vladimir Kozlov


старым. И есть процедурка - "получить текущий остаток". Соответственно  
она



как на счет многопользовательской работы?



смотрит - есть запись в таблице текущих остатков - достать оттуда



в ее транзакции - нету, а параллельной - есть дальше продолжать?


Хм. Ну если уж на то пошло - то и при подсчете остатка накатом тоже в  
одной транзакции запись о расходе товара будет, а в другой нет... и  
посмотрит транзакция - есть на складе 5 единиц товара; вставит расходную  
проводку и перейдет к следющей строке документа; а в это же самое время  
другая транзакция то же самое сделает :) И будет на складе отрицательный  
остаток когда обе транзакции завершатся.


В случае с таблицей в которой кэшируются оперативные остатки - запись  
можно не удалять, а помечать как неактуальную, это даст возможность  
заблокировать эти записи и не дать второй транзакции туда лазить пока  
первая не завершится. То есть пока не проведется товарная накладная -  
залочить все записи в таблице остатков относящиеся к товару в ней.




Re: Оцените идею :-)

2007-11-01 Thread Vladimir Kozlov


deadlock, при попытке обновить одну и ту же строку остатков... если бы  
это была одна строка, и ты ее не пересоздавал, а именно - обновлял.


Таки да, обновлять надо а не пересоздавать. То есть триггер на таблицу  
проводок должен в таблице остатков у этой записи флажок поменять, а не  
дропать ее.


PS: чего-то у тебя в заголовках мессаг Content-type куды-то пропал... я их  
штирлицем расшифровываю бо опера кракозяблы кажет :)




Re: OFF/2 Обрубить внешние коннекты

2007-11-02 Thread Vladimir Kozlov



Некоторые пользователи взяли моду не отключаться от сервера на ночь.


Я сделал так: в приложении - таймер, сбрасывающийся по клаве/мыши. N часов  
неактивности - завершение приложения.




Re: Обращение к переменным в PSQL

2007-11-02 Thread Vladimir Kozlov


У меня и так не возникает. Нигде не пишу (включая into и  
returning_values), кроме внутренностей запросов.


Самая злобная грабля - забыть поставить в запросе двоеточие перед  
переменной, имя которой совпадает с именем поля :)




Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-02 Thread Vladimir Kozlov


Нифига себе оперативность - через час и 10 минут после помещения в трекер  
уже "Fixed" ;)




Re: OFF: К пятнице

2007-11-02 Thread Vladimir Kozlov



Пил натуральную китайскую рисовую водку.



сакэ под суши идет отлично. Хотя чаще я предпочитаю
водку вместо сакэ. А вот сакэ с чем-то другим пить или вообще - не  
канает.


Слова "сакэ" на бутылке не было :) одни иероглифы - китайцы привозили  
водку из Китая с собой, совещание обмывать (тогда еще в самолетах не  
шугали).




Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-02 Thread Vladimir Kozlov


Сделал на пустой базе.

собственно вот он злополучный код:

create global temporary table doc$70$invoice (
iddocrow varchar(40) not null,
idgoods  integer not null,
qty  integer not null,
pricedouble precision not null,
invamt   double precision not null,
custcode varchar(40),
custproc double precision,
custposhldouble precision,
custaccizdouble precision,
custtva  double precision,
inv_plus_custdouble precision,
udeln_summ_rash  double precision,
inv_plus_cust_plus_rash  double precision,
rezerv2182   integer,
recompriceoptdouble precision,
recompriceprim   double precision,
newspricedouble precision
) on commit delete rows;

alter table doc$70$invoice add constraint pk_doc$70$invoice primary key  
(iddocrow);


И выполняю я следующее:

INSERT INTO doc$70$invoice  
(iddocrow,idgoods,qty,price,invamt,custcode,recompriceopt,recompriceprim)
VALUES ( 'a975ce58-c1cf-11db-8000-e503b3f1' , 136171 , 1056 , 67 ,  
1056 * 67 ,

'1' ,NULLIF( '' ,''), NULLIF( '' ,''))



Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-02 Thread Vladimir Kozlov



Смотри в Экспертном "отладчике" закладку Last Statement.
Скопируй запрос, который сгенерил Эксперт
и выполни его самостоятельно.
Если получишь воспроизводимый пример, рапортуй баг.


Спасибо, сервер упал :) Сейчас попробую создать пустую базу с одной лишь  
этой временной таблицей и попытаюсь на ней. Если свалится, отправлюсь  
читать нет ли уже в трекере этой каки.




Re: OFF: К пятнице

2007-11-02 Thread Vladimir Kozlov


пью коньяк, водку, виски. Пил много разных, по разному, разбираюсь, могу  
отличить.

Также пил ром, кашасу и т.д.


Пил натуральную китайскую рисовую водку.
На запах - как жидкость для снятия лака. Но на вкус - вообще не чувствуешь  
что это что-то алкогольное, пока сидишь за столом - и голова свежая и  
никаких алко-ощущений. Но как только пытаешься встать - чувствуешь что  
что-то не так с ногами...




Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-02 Thread Vladimir Kozlov


При попытке пройтись IBExpert-овским дебаггером по процедуре, на операции  
вставки во временную таблицу сервер падает :(

В логе - "c:\FB2.1\bin\fbserver.exe": terminated abnormally (4294967295)

Если просто выполняю процедуру - всё нормально.

Куды кричать? :)



Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-02 Thread Vladimir Kozlov


Стоп. Дело даже не в GTT (просто именно на нем нарвался).

select NULLIF('','') from rdb$database

валит сервер точно так же.



Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-03 Thread Vladimir Kozlov


 Нифига себе оперативность - через час и 10 минут после помещения в  
трекер уже "Fixed" ;)



Когда-то на sql.ru рекорд был порядка 20 минут :-)


Ну я после помещения в трекер еще где-то минут через 20-25 поменял  
описание бага - вначале думал что это с GTT связано а потом обнаружил что  
банальный NULLIF('','') сервер валит. Так что между тем моментом как я  
вразумительно описал баг и тем моментом как Саша Пешков его исправил -  
времени прошло значительно меньше часа :)


Кстати, а чего-то снапшоты перестали выкладываться... последний от 27  
октября - и до CVS чего-то не получается достучаться... а без двух  
пробежавших за это время фиксов, которые мне ужны - сижу курю :)




Re: OFF: пятница

2007-11-03 Thread Vladimir Kozlov



22. ЛК: Нет, FireBird не будет. Мы считаем, что MySQL и Postgres
достаточно. К нам лишь один раз обращались с просьбой собрать для
сервера FireBird, и мы его собирали для этого клиента. Больше
обращений не было.


Даже в сверхконсервативнейшем (который от этого не перестает оставаться  
моим любимым) Дебиане птичка из коробки есть...






Re: OFF: пятница

2007-11-04 Thread Vladimir Kozlov


ничего не имею против "всех линуксов", но если говорить именно про alt и  
asp, то глюкало это страшное.


Ну, альтовцы - ребята адекватные (по опыту общения). И по поводу  
нехватки/глюкабельности какого-либо пакета говорят примерно следующее -  
"если оно вам таки надо чтоб непременно было в нашем дистре - стать  
мейнтейнером пакета никто не запрещает". На то и OSS :)


В конце 2005 они сказали "птичка на подходе к включению в Сизиф", а потом  
она стала orphaned - ну, значит, всех устраивает RedHat/Debian/Gentoo или  
что там еще :)





Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-04 Thread Vladimir Kozlov



Машина сломалась. Сегодня-завтра снова появятся.


Под лин уже вижу что есть. Ну мне и хватит - sapienti sat как говорится  
(хоть я и не очень sapienti:) )



и до CVS чего-то не получается достучаться

Вот это странно. Никаких проблем там вроде не наблюдалось...


Возможно это мои персональные траблы; пров большой shaloon и периодически  
играется с портами на WCCP  - сегодня уже вижу что удается  
приконнектиться. Кстати, ламерский вопрос - прежние инструкции по  
самостоятельной сборке из CVS остаются в силе? Излазил весь ibase.ru, но  
свежей доки с тычком носом в build prerequisites и свежего хауту не нашел  
:(




Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-04 Thread Vladimir Kozlov



Win:



make_icu
make_boot
make_all


Какой сейчас официальный компилер для сборки? А то у меня начиная от mingw  
кончая полной коллекцией всяких визуалстулий есть...




Re: OFF: пятница

2007-11-04 Thread Vladimir Kozlov



Да точно. Вы сами все сделайте, а мы продавать будем.
А то у нас тока продавцы, и сами мы делать не можем ничего.


Не, тут политика немного другая: "есть продаваемый дистр. Хотите чтобы в  
ходе продажи этого дистра продвигался еще и ваш продукт - кладите в дистр"  
:) По сути, альтовцам не сильно оно и надо, а если FB-комьюнити посчитает  
нужным включить свой продукт в их дистр, они не против. Но - есть более  
распространенные дистры, которые охватывают намного больший сегмент  
инсталяций. Поэтому наличие/отсутствие FB в AltLinux просто не напрягает  
тех кому FB нужен - есть другие дистры, выбор большой :)



Ну вот видишь: говорят красиво, а как доходит до дела, так все.


В поставке MS Windows тоже FB нету, но FB под винду собирается несмотря на  
абсолютную незаинтересованность микрософта в нем :)


ИМХО включение/невключение какого-либо софта в определенный дистр OC - в  
первую очередь дело не сборщиков ОС а разработчиков софта. Если бы 90%  
инсталяций линуха на территории СНГ было альтовских - уже давно б там  
птичка была, а так - не тот сегмент рынка чтоб напрягаться :)




Re: OFF: пятница

2007-11-04 Thread Vladimir Kozlov


А есть типа статистика какая, какой *них народ на сервера, а какой -  
на станции ставит?..


На уровне здравого смысла - на сервера Debian, CentOS, RHEL, SLED; на  
станции - убунту, зюзю, федору и иже с ними :)




Re: Падает FB 2.1 beta 2 при попытке отладки процедуры с временной таблицей

2007-11-05 Thread Vladimir Kozlov



 Какой сейчас официальный компилер для сборки?



8.0 для 2.1 и выше, 7.1 для 2.0 и 1.5.


Попутно - а на каком дистре собираются линуксовые rpm-ки?



Re: OFF: пятница

2007-11-06 Thread Vladimir Kozlov


На уровне здравого смысла - на сервера Debian, CentOS, RHEL, SLED; на  
станции - убунту, зюзю, федору и иже с ними



Я так понимаю, что выбор чисто религиозный?
Мы выбрали ASPLinux Server просто как "первый попавшийся" и везде до сих  
пор его используем. Глюков не найдено.
Т.к. собирается он на ядре красношапки и кроме инсталлятора своего  
ничего не привносит, не вижу аргументов его оплёвывать.

Есть какие-то примеры?


А я его и не оплевываю, это один из предыдущих ораторов предлагал его в  
топку отправить.


"Религиозность" же моего выбора сводится к следующему: есть дистры  
стабильные, софт в них не супер-пупер новый, но зато на него уже  
понаделано фиксов, патчей и т.д. Поскольку мне с софтом сексом заниматься  
не надо - его возраст не так уж критичен; что с того что на сервере не  
будет трехмерного рабочего стола и свежайшей версии KDE? :) Поэтому на  
сервер и ставить лучше что-то у чего не будет пучить живот и отваливаться  
пуговицы - в отличие от убунты, федоры, суси (которая Open а не которая  
SLE); ибо те, как сорока, тянут в репы всё что блестит :) Подключи-ка в  
OpenSUSE одновременно Packman и Videolan и попробуй собрать что-то  
ffmpeg-ное :)


Для десктопа - да боже ж мой, десктопу 24x7x365 пахать не надо, и если раз  
в неделю конкверор упадет, то не страшно; или после свежего апдейта ядра  
проприетарная нвидия не поднимется - потратить 10-20 минут на приведение  
системы в работоспособное состояние не так уж и жалко. Туды и убунту и  
сусю можно засунуть, и из BuildService натягать свежатины шоб сидеть с  
гордой мордой :)




OFF, но все равно маленькая радость :)

2007-11-10 Thread Vladimir Kozlov


Похоже, я таки задолбал девелоперов из Sun своими воплями и они соизволили  
им внять :) Поставил сейчас на линух свежую сборку JDK7 и о чудо - наконец  
в постскриптовом прологе убран идиотский DeferredMediaSelection...

"Стучите и вам таки откроют" ;))



Re: OFF: альтернатива zebedee

2007-11-15 Thread Vladimir Kozlov


Прошу поделиться опытом, если кто-то ПРАКТИЧЕСКИ использует нечто,  
отличное от ZeBeDee для шифрации/упаковки трафика в публичной среде  
передачи (в интернете).
Мы сейчас используем zebedee для безопасного доступа к FB через  
интернет. Сеть клиентская растет, завязки между серверами усложняются, а  
на каждый канал необходимо у клиента иметь запущенный экземпляр zebedee  
со своим конфигом.


Я использую OpenVPN, клиенты получают по евонному DHCP предопределенные  
IP-шники определяемые сертификатами. Про зебедю забыл как про страшный  
сон. По OpenVPN бегает терминал (а в перспективе терминал тоже похороню и  
заменю на NX - ибо рулез), там же корпоративный FTP, весь CUPS, POP3 для  
корпоративной почты и VNC до кучи. И очень доволен :)




Re: OFF: альтернатива zebedee

2007-11-15 Thread Vladimir Kozlov




 VK> в перспективе терминал тоже похороню и заменю на NX - ибо рулез



А что такое NX ?


Терминальный сервер, www.nomachine.com. Версия которую они раздают  
бесплатно, рассчитана на двух юзеров, но исходники лежат в свободном  
доступе и скрещиваются с FreeNX, который под GPL :) Для реализации  
терминального доступа при переходе с виндузы на линух - шикарная вещь.





Re: OFF: альтернатива zebedee

2007-11-16 Thread Vladimir Kozlov



 ??>> А есть что-нибудь для терминал-клиента под *нихи, когда
 ??>> термнал-сервер под В2К3?..


А можно пару-тройку наименований, дабы упростить мне "тряску  
гугля"?.. ;)


Тю :) в любом более-менее пристойном дистре есть tsclient и rdesktop.  
tsclient - мышевозногуйный, настоящие индейцы юзают rdesktop потому что  
ему можно много вкусных ключей из командной строки скормить.






Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-19 Thread Vladimir Kozlov


Сабж.

Ну FB, понятное дело, кидает эксепшен - а регулируется ли это поведение  
каким-либо стандартом?




Re: Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-19 Thread Vladimir Kozlov


а регулируется ли это поведение каким-либо стандартом?


А разве тут могут быть варианты?


SQLAnywhere и MySQL при преобразовании пустой строки в число возвращает  
ноль. FB и PostgreSQL ругаются.

Я потому и спрашиваю - есть ли стандарт который это регулирует?



Re: Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-19 Thread Vladimir Kozlov



M$ тоже от стандарта отходит, и кажет "0.0"


Access тоже (там правда CAST ваще нет но SELECT VAL("") тоже ноль).

Итого счёт 4:2 ;)



Re: Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-19 Thread Vladimir Kozlov



чума. я еще понимаю что '0' может быть преобразован в 0.
Но '' в 0 - это сильно. так же как и '' в null :-)


Если ввести философскую категорию "пустого не-null значения" - то в него  
попадают 0 наравне с '' :-)

Вот CAST('' AS DATE) в такую философию не пришивается, жалко ;)

Однако присутствие в списке нарушителей таких "сверхраскрученных" как  
MySQL и MSSQL - наводит на мысль что эта философская категория в мозгу  
ряда разработчиков таки прописалась...




Re: Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-20 Thread Vladimir Kozlov



Один только "having name=name" меня в ступор на два дня вогнал.


Индусским буддистам вполне понятен сакральный смысл этой конструкции.  
Потому как обращение к колесу сансары из запроса улучшает карму сервера.

=)



Re: Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-20 Thread Vladimir Kozlov



А не пустой? Типа
CAST('ФУ' AS DOUBLE PRECISION)


SQLAnywhere честно сказал что не может преобразовать ФУ в double :) MySQL  
щас под рукой нет но думаю что он тоже ругнется.




Re: Знатокам стандартов - чему равен CAST('' AS DOUBLE PRECISION)

2007-11-20 Thread Vladimir Kozlov



В BDE испокон веков было: AsString(null)='', AsInteger(null)=0
А круче всего: AsDate(null)='00.00.'
:)


Ну ты уж БиДЕ в SQL-сервера не записывай ;) БиДЕ оно биде и есть...




Re: substring параметра

2007-11-20 Thread Vladimir Kozlov



В 2.1 работает, в 1.5.4 - нет :-((
Придется извращаться на клиенте


А если обернуть запрос в процедуру и отделить substring от селекта?



Re: Снапшот FB 2.1 свежий хоу

2007-11-22 Thread Vladimir Kozlov



У меня не билдятся... :(
Уже стёр все сорцы, слил всё заново...
Всё равно не билдятся... :(((


У мну 2.1.0.17320 сбилдился седня без проблем...



Re: Д.Р. Коваленко !

2007-11-27 Thread Vladimir Kozlov



Пусть счётчики ссылок в твоих интерфейсах никогда не переполняются,
а GUID'ы - не повторяются ! Пусть отсохнет язык у того, кто назовёт тебя
IUnknown ! Чтоб твой QueryInterface никогда ошибался, а агрегирование
всегда было успешным !


ПРИСОЕДИНЯЮСЬ!!!



Re: Как быстро сделать харакири БД?

2007-11-30 Thread Vladimir Kozlov


Тогда, пока контейнер не смонтирован - в папке будет порнуха, а когда  
смонтирован - база. Расковырять контейнер не зная передаваемого в  
криптлуп ключа - можно only ректотермальным анализом :)


Вдогонку, для совсем паранойи - есть такая штука "Wireless PC Lock".  
Приемничек в виде USB-флэшки и радиобрелок в кармане. В принципе ее можно  
научить выполнять произвольный скрипт при получении сигнала...




Re: Как быстро сделать харакири БД?

2007-11-30 Thread Vladimir Kozlov



Но есть большая вероятность что харакири потребуется.


Если сервер линуксовый - читать про dmcrypt и cryptsetup, почитав и  
получив просветление сделать контейнер, замаунтить через криптлуп,  
покласть туды базу. В папку служащей точкой монтирования положить пару гиг  
порнухи.

Монтировать при запуске сервера руками или через удаленный шелл.

Тогда, пока контейнер не смонтирован - в папке будет порнуха, а когда  
смонтирован - база. Расковырять контейнер не зная передаваемого в криптлуп  
ключа - можно only ректотермальным анализом :)







Re: Как быстро сделать харакири БД?

2007-11-30 Thread Vladimir Kozlov



5-10 грамм пластида "под винт" и электрический детонатор на LPT-порт.
Посылаем на LPT все, что угодно, чтобы "электричество пошло" :)
Главное, по запарке на печать что-нибудь не пустить ;)


Спасибо, посмеялся ;) Ты примерно представляешь в какие моменты работы ОС  
что с LPT происходит? Уж лучше к виброзвонку мобильника детонатор  
прицепить, как террористы делают...





Re: Как быстро сделать харакири БД?

2007-11-30 Thread Vladimir Kozlov



В свое время я сделал такую шнягу в расчете
на то, что сервак будут конфисковывать. Соответственно
выключать и включать. На клиентском месте в час Х просто
запускается батник, который на сервере переименовывает
другой батник. Тот батник и удаляет базу при включении
сервера


Поможет против выпускников ускоренных курсов школы милиции. Ни один  
эксперт в здравом уме не включит конфискованный винт праймари-мастером...




Re: Как быстро сделать харакири БД?

2007-11-30 Thread Vladimir Kozlov



Упаси Господи, чтоб сей радиобрелок с кнопочкой,
не попал в детские (да и не только) шаловливые ручки... :о))
А то ой!


Ну, в серъезных системах безопасности, как правило, отдается предпочтение  
возможности ложной сработки по сравнению с несработкой. Да и говорю ж -  
для параноиков эта шняга с радиобрелком. А против начальных фаз  
ректотермального анализа отлично работает такая фича как plausible  
deniability (в truecrypt оно встроено, да и на криптлупе можно в принципе  
сделать если о смещением монтирования поиграться).




Re: Как быстро сделать харакири БД?

2007-12-02 Thread Vladimir Kozlov


Распределить по винту 1см3 термита... Придумать, как его поджечь  
одной кнопкой... %)))


Все приколы с термитом, пластитом и так далее, как это ни смешно, будучи  
опубликованными в общедоступной конфе - могут особо бдительными людьми на  
местах пришиты к призыву к террористической деятельности. Чувство юмора  
ответственных товарищей может не совпадать с нашим.


Кстати, если в ходе "масок-шоу" что-то в системнике рванет - мордой в пол  
и в специзолятор ФСБ очень даже вероятно.
Поэтому агрессивно-деструктивные методы рассматривать нельзя (ну и  
сработку противопожарной системы с заливкой серверного зала фреоном -  
тоже; плавали - знаем).


А вот, к размышлению (не на правах рыкламы) - amazon.com сдает в прокат  
виртуальные сервера на базе RHEL всего за 72 монгольских рубля в месяц,  
плюс трафик. Для конторы которая бережется от всякого-такого - недорого.  
Ставь там птичку, wine, NX и наслаждайся...




Re: Как быстро сделать харакири БД?

2007-12-02 Thread Vladimir Kozlov


Только теми людьми, которые действительно не отличают термитное  
вещество (локальное прожигательное :)) от пластита (достаточно  
глобальное и ВЗРЫВАТЕЛЬНОЕ)...


Это ты отличаешь и я отличаю, а среднестатистический опер увидит в этом не  
локально-прожигательное вещество а шанс заработать галочку :)



 VK>  - мордой в пол  и в специзолятор ФСБ очень даже вероятно.
Если РВАНЁТ, то не "вероятно", а 100%-но...


Если и не РВАНЕТ а спокойненько загорится - ну, на теракт не потянет а  
"уничтожение улик общественно-опасным способом" вполне могут припаять.  
Плюс к тому выжженный винт с ненулевой вероятностью потянет за собой  
короткое замыкание, с опять же ненулевой вероятностью последующего  
выбивания пробок, и лежать мордой в пол придется при свете  
оперативно-тактического фонаря ;)




Re: Как быстро сделать харакири БД?

2007-12-02 Thread Vladimir Kozlov


что с LPT происходит? Уж лучше к виброзвонку мобильника детонатор  
прицепить, как террористы делают...



Васю можно?
извините, ошибся номером


Любой современный мобильник позволяет настраивать типы вызовов под  
входящие номера. И можно настроить включение вибры при звонке только с  
определенных номеров

(впрочем стоп, а то уже "курс молодого анархиста" получается)



Re: Как быстро сделать харакири БД?

2007-12-04 Thread Vladimir Kozlov



И что дальше ? Посидишь в СИЗО месяцок, мозги покомпостируют и
отпустят "за отсутствием ..."


Попасть можно не в ФСБ-шный СИЗО а в обычный ментовской. А там уж  
прокомпостируют так прокомпостируют, и мозги и еще че-нибудь :) Так что уж  
лучше решать проблему техническими способами.


Да и, в конце концов, взять выделенку на физлицо Васю Пупкина и поставить  
терминальный сервер где-то на даче. Конечно, если в грамотную разработку  
возьмут и обложат по полной - то могут и IP-accounting у прова взять и все  
айпишники от-whois-ить, но это маловероятно :)




Re: Как быстро сделать харакири БД?

2007-12-05 Thread Vladimir Kozlov



Сеть аккуратно проводится в этот офис. Нет проблем замаскировать.
То что провод найдут - вполне вероятно, но при этом будет минимум 20-30
минут на замену винчестеров.


Провод тянуть не обязательно, можно WiFi заюзать. Тогда вообще лепота :)



Re: Derived tables - неудачный план?

2007-12-18 Thread Vladimir Kozlov



А куда тады derived tables девать?



В двойную группировку? ;)


Derived tables - одна из самых полезнейших фич за последнее время. Кучу  
запросов при чтении которых возникало желание позвать проктолога, удалось  
развернуть в элегантные и удобочитаемые конструкции с derived tables.


Но вот чего бы хотелось - нечто вроде DECLARE DERIVED TABLE AS SNAPSHOT OF  
SELECT <...> в хранимых процедурах :)




Re: Гарантированный шатдаун

2007-12-18 Thread Vladimir Kozlov



Или что два раза онлайн придётся делать?


;)



блеск и нищета GTT?

2007-12-18 Thread Vladimir Kozlov


Раз уже про Derived Tables заговорили - позволю себе затронуть смежную  
тему.
А расскажите-ка мне про минусы GTT, в каких случаях их не рекомендуется  
использовать и в каких случаях их не рекомендуется использовать  
категорически?




Re: FB 2.1.0.17698 RC1

2007-12-28 Thread Vladimir Kozlov



Я не могу понять что возвращает GEN_UUID



CHAR OCTETS


Эх, надо было таки хотелку пролоббировать... а то для перевода в  
хомочитабельный вид приходится проктологию привлекать... :)




Re: БД на flash диске

2007-12-28 Thread Vladimir Kozlov


Чтобы не мучаццо с вытягиванием винчестера при приходе проверяющих  
органов

Радостные органы уходят с системником, на котором ценного ничего нет
Флэшка вставляется в другой комп


Кстати буквально недавно видел WiFi винт который вообще в комп вставлять  
не надо а можно замуровать за туалетным бачком :)




Re: FB 2.1.0.17698 RC1

2007-12-28 Thread Vladimir Kozlov



А зачем?
Ты rdb$db_key часто приводишь к "хомочитабельному" виду?


Я на rdb$db_key FK не делаю и потом в IBExpert по подчиненным таблицам не  
шоркаюсь :)




Re: Re[2]: ПлуОФФ про UTF8

2007-12-28 Thread Vladimir Kozlov



З.Ы. Блин, прикрутили нормальный грейлистинг для мыла и так тоскливо
стало - ни удлинить, ни увеличить, ни медикаментов по дешевке... :)


Я тоже прикрутил у себя грейлистинг - но все знакомые адреса в белый  
список позапихал. А фишка обалденная, всякие спамассасины и рядом не  
валялись :)




Re: FB 2.1.0.17698 RC1

2007-12-28 Thread Vladimir Kozlov



А я не использую GUID для PK :)


Ну это вопрос религии :) Ну а мне, поскольку я омерзительно ленив, иногда  
влом цацкаться с начальными значениями генератора для разных баз - проще  
гуид забульбенить :)




Re: FB 2.1.0.17698 RC1

2007-12-29 Thread Vladimir Kozlov



а есть статистика вероятности натнутся на одинаковы гуиды ?
например 5 баз в реплике и по сотне записей в минуту


Вероятность 50% - или натолкнешься или нет. А вот что делать когда гуиды  
закончатся...




Re: FB 2.1.0.17698 RC1

2007-12-29 Thread Vladimir Kozlov



А вот что делать когда гуиды  закончатся...


В After Delete триггерах надо на место возвращать, тогда есть довольно  
большой шанс доятнуть до пенсии.


А возвращенный на место гуид будет виден вне контекста транзакции? ;)



Re: RDB$GET_CONTEXT: хотелка

2007-12-30 Thread Vladimir Kozlov



В общем, что я хочу - автоматизированный модуль, который мониторит кто
чем занимается.


Это правильная хотелка. Я уже отдельным товарищам намекал :)
Но ежели уж совсем правильно - то надо нечто подобное мелкомягкому  
SQL-трейсу, а еше лучше - провайлер как в Sybase ASA. Для своих нужд,  
когда "где-то что-то как-то тормозит и непоймичто" - лучшего инструмента  
чем в ASA я не видел. Там можно запустить профайлинг, собрать статистику,  
остановить профайлинг и вдумчиво помедитировать над таймингами  
стейтментов...


А про мониторинговые таблицы - я уж как-то раз до того домаразмировался  
что пытался триггер на инсерт к ним присобачить.. ну естественно сволочной  
эксперимент угробил красоту идеи :



И с Наступающим Новым Годом ! Успехов, творческого вдохновения,
здоровья, реализации самых сокровенных фантазий !


Присоединяюсь! А мы сейчас в конторе пить будем... я остановлю ssh на  
серваках - бо в пьяном виде я его уже не включу, и серваки смогут пережить  
новый год :)


Ну, за птичку!



Re: RDB$GET_CONTEXT: хотелка

2007-12-30 Thread Vladimir Kozlov



... Там можно запустить профайлинг, собрать статистику,
остановить профайлинг и вдумчиво помедитировать над таймингами
стейтментов...


уточни пожалуйста, куда у них идет запись статистики
(файл (тектстовый?)? или специальная БД?)


Куда-то в кишки самой БД (потому что результат команды BACKUP DATABASE  
DIRECTORY, поднятый на другом компе, содержит в себе собранную статистику).


А еще у них для лентяев есть Index Consultant, который петрушит эту  
статистику, вынюхивает в ней неоптимальные планы и выдает рекомендации :)  
Типа визарда, но в основном он дает подсказки по делу а не от балды :)




Скажите мне правду

2008-01-20 Thread Vladimir Kozlov


На страничка у Бахвалова выложена бета 2.5. А что сейчас в CVS и где  
берется 2.5?




Re: Скажите мне правду

2008-01-21 Thread Vladimir Kozlov



2.5 в HEAD, 2.1 в бранче B2_1_Release.


Почитал чего там в 2.5 новенького - вот это порадовало:  
README.domains_psql.txt


А если я меняю что-то в домене - процедуры c TYPE OF это поймут или их  
таки перекомплять надо будет?




Re: Скажите мне правду

2008-01-21 Thread Vladimir Kozlov



 Почитал чего там в 2.5 новенького



Где читал?


В том что из HEAD с CVS получил


README.domains_psql.txt



Это относится к 2.1, вообще-то. По 2.5 никакой документации еще нет.


Мммм? README.domains_psql.txt лежит в HEAD а не в бранче бранче  
B2_1_Release.




Re: Скажите мне правду

2008-01-21 Thread Vladimir Kozlov



Там все фичи всей версий, начиная с 1.5.


Мммм? README.domains_psql.txt лежит в HEAD а не в бранче бранче  
B2_1_Release.



README.execute_statement тоже в HEAD лежит, ну и что? :-)


Я исходил из того что в HEAD он есть а в B2_1_Release - нету. Ну и подумал  
что в 2.1 этой фичи нет, а в 2.5 - есть.


Ну а все-таки, если параметр процедуры описан как TYPE OF - он отреагирует  
на изменение свойств домена?




Re: Скажите мне правду

2008-01-21 Thread Vladimir Kozlov



 Я исходил из того что в HEAD он есть а в B2_1_Release - нету.

Есть он там.


Сорри, ступил - я сортирую файлы по дате "свежими вверх", а у него как раз  
дата поменялась. Иду за пепельницей - голову пеплом посыпать...




Какие самые младшие версии работают под Vista?

2008-01-25 Thread Vladimir Kozlov


Какая по возможности самая древняя версия FB/IB будет под вистой работать?



Re: Какие самые младшие версии работают под Vista?

2008-01-25 Thread Vladimir Kozlov



FB все работают, про IB не в курсе, не ставил.


Нужна совместимость с древнючими приложениями жившими на IB6. Как я  
догадываюсь FB1 должен по идее с ними работать, эта версия входит в  
понятие "все работают"?




Re: javaw застряет с embedded - и еще

2008-03-23 Thread Vladimir Kozlov



-XX:-PrintConcurrentLocks


Вот такое получил (в случае embedded, а при запуске в режиме локального  
или сетевого клиента застревающей жабы не наблюдается, приложение при  
выходе завершается чисто) :


c:\Projects2008\Balti\Distr\SRC_local>java -XX:-PrintConcurrentLocks -jar  
XD2K8BLT.jar


Full thread dump Java HotSpot(TM) Client VM (10.0-b19 mixed mode, sharing):

"TimerQueue" daemon prio=6 tid=0x03719800 nid=0xff8 in Object.wait()  
[0x03baf000..0x03bafb14]

   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22f3b128> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(Unknown Source)
- locked <0x22f3b128> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Unknown Source)

"DestroyJavaVM" prio=6 tid=0x002a5c00 nid=0xe90 waiting on condition  
[0x..0x0090fd4c]

   java.lang.Thread.State: RUNNABLE

"AWT-EventQueue-0" prio=6 tid=0x02f97800 nid=0x700 in Object.wait()  
[0x033cf000..0x033cfc14]

   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22eb7830> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(Unknown Source)
- locked <0x22eb7830> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown  
Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown  
Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

"AWT-Windows" daemon prio=6 tid=0x02f92c00 nid=0x1f8 runnable  
[0x0314f000..0x0314fc94]

   java.lang.Thread.State: RUNNABLE
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"AWT-Shutdown" prio=6 tid=0x02abe400 nid=0x6cc in Object.wait()  
[0x030ff000..0x030ffd14]

   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22eb7970> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.awt.AWTAutoShutdown.run(Unknown Source)
- locked <0x22eb7970> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"Java2D Disposer" daemon prio=10 tid=0x02abd800 nid=0x688 in Object.wait()  
[0x030af000..0x030afd94]

   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22eb7a00> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x22eb7a00> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at sun.java2d.Disposer.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"Low Memory Detector" daemon prio=6 tid=0x02aa6000 nid=0xa70 runnable  
[0x..0x]

   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x02aa0800 nid=0xdf8 waiting on  
condition [0x..0x02d1f740]

   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x02a9f800 nid=0x100 runnable  
[0x..0x]

   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x02a9e800 nid=0xff0 waiting on  
condition [0x..0x]

   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x02a5e400 nid=0xf8 in Object.wait()  
[0x02c2f000..0x02c2fc94]

   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22e769d8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x22e769d8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

"Reference Handler" daemon prio=10 tid=0x02a5d400 nid=0xd3c in  
Object.wait() [0x02bdf000..0x02bdfd14]

   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22e76778> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x22e76778> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x02a5c000 nid=0xdc runnable

"VM Periodic Task Thread" prio=10 tid=0x02ab8400 nid=0xdfc waiting on  
condition



JNI global references: 1202

Heap
 def new generation   total 960K, used 854K [0x2297, 0x22a7,  
0x22e5)


  eden space 896K,  88% used [0x2297, 0x22a364c8, 0x22a5)
  from space 64K

Re: javaw застряет с embedded - и еще

2008-03-25 Thread Vladimir Kozlov


Приложение завершается по тычку мышью в кнопку закрытия окна :)

Вот собственно ободранный донельзя скелет стартового класса:

public class Main extends JFrame {
...
...
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(new 
PlasticXPLookAndFeel());
} catch (Exception e) {
System.err.println("Can't set look & 
feel:" + e);
}
instance = new Main();

instance.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
instance.setVisible(true);
}
});
}
private static Main instance = null;
}

При сетевом коннекте жабы в висящих процессах не остается, так что вроде  
не должно ничего свингового ее держать...

Попробую как оно в консольном приложении.


У тебя приложение заввершается по System.exit(0)? Или по завершении  
активных потоков? Судя по списку потоков, все потоки принадлежат Swing.


Можеш сузить функциональность до консольного приложения? И на нем  
воспроизвести ошибку.




Re: javaw застряет с embedded - и еще

2008-03-25 Thread Vladimir Kozlov


В консоли та же шняга только в профиль:

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class T1 {
private static Connection conn = null;

public static void main(String[] args) {
Properties props = new Properties();
props.put("user", "SYSDBA");
props.put("password", "1");
props.put("sql_role_name", "DBUSER");
props.put("DYNAMIC_PREPARE", "true");

String dbURL = 
"jdbc:firebirdsql:embedded:c:\\xd2k8blt\\xd2k8blt.fdb";
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
conn = DriverManager.getConnection(dbURL, props);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

}
}

По завершению процесса - имеем застрявшую жабу.

пишем

String dbURL = "jdbc:firebirdsql:127.0.0.1:c:\\xd2k8blt\\xd2k8blt.fdb";

и застрявшей жабы не имеем.


Можеш сузить функциональность до консольного приложения? И на нем  
воспроизвести ошибку.




Re: javaw застряет с embedded - и еще

2008-03-25 Thread Vladimir Kozlov


Ты будешь смеяться, но я сейчас специально скачал fbembedded 2.0 - так вот  
с ним всё нормально.



Ну эт ваще - прям перчатку в лицо бросил :))) Попробовал у себя - все  
работает, даже если как и у тебя коннект не закрывать... правда  
fbembedded у меня 2.0, не 2.1... дома попробую с 2.1.


Если у меня тоже зависнет - придется к Владу или Димке приставать,  
поскольку у меня нет "экспериментального" ФБ 2.1 в VS2005 - сам  
пользуюсь официальными сборками :)




  1   2   >