Автор | Сообщение |
|
| |
Пост N: 2691
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.03.13 12:02. Заголовок: BMDBFCDX
Занятный RDD. Позволяет ставить оптимизированные фильтры даже без наличия индексов по фильтруемым полям а так же фильтры типа CUSTOM Есть пара вопросов proc main local afilt:={} local nsec:=0 REQUEST BMDBFCDX REQUEST _BMDBF RDDSETDEFAULT( "BMDBFCDX" ) cls USE karta new // 10 полей 700000 записей set optimize on // не понятно назначение сией команды , результат одинаков // при OFF или ON nsec:=seconds() set filter to nomer==1454 go top ? seconds()-nsec // 0.14 секунд , DBFCDX выдал чуть хуже результат да и бровс с ним получился с тормозом. aadd(afilt,1) aadd(afilt,400000) aadd(afilt,700000) nsec:=seconds() BM_DBSETFILTERARRAY(afilt) go top ? seconds()-nsec // 0.0 секунд afilt:={} aadd(afilt,100) aadd(afilt,4000) aadd(afilt,7000) aadd(afilt,8000) aadd(afilt,17000) nsec:=seconds() BM_DBSETFILTERARRAY(afilt) go top ? seconds()-nsec // 0.0 секунд BM_DBSETFILTERARRAYADD(afilt,18000) // добавляем 6 запись ? len(BM_DBGETFILTERARRAY()) // но длина массива не изменилась //странно , возможно не так ее юзаю wait go top browse() // бровс летает close all return nil И не понятно что за зверь такой BM_Turbo() ? BM_Turbo(.t.) ? BM_Turbo(.f.) Вернет .F. в обоих случаях
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 2692
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.03.13 15:01. Заголовок: Dima пишет: И не п..
Dima пишет: цитата: | И не понятно что за зверь такой BM_Turbo() ? BM_Turbo(.t.) ? BM_Turbo(.f.) Вернет .F. в обоих случаях |
| Ага , что то видимо задумывалось но ....... HB_FUNC( BM_TURBO ) { hb_retl( HB_FALSE ); }
|
|
|
|
| |
Пост N: 2693
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.03.13 15:05. Заголовок: Dima пишет: BM_DBSE..
Dima пишет: цитата: | BM_DBSETFILTERARRAYADD(afilt,18000) |
| Разобрался. Надо так aadd(afilt,18000) BM_DBSETFILTERARRAYADD(afilt)
|
|
|
|
| Администратор
|
Пост N: 2726
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.03.13 16:00. Заголовок: Dima пишет: Надо та..
Dima пишет: цитата: | Надо так aadd(afilt,18000) BM_DBSETFILTERARRAYADD(afilt) |
| Можно просто: BM_DBSETFILTERARRAYADD({18000}) Параметр - это массив номеров записей, которые добавляются к существующему фильтру.
|
|
|
|
| |
Пост N: 2694
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.03.13 16:08. Заголовок: Pasha пишет: BM_DBS..
Pasha пишет: цитата: | BM_DBSETFILTERARRAYADD({18000}) |
| Спасибо !
|
|
|
|
| |
Пост N: 42
Зарегистрирован: 13.06.12
|
|
Отправлено: 09.03.13 19:40. Заголовок: Dima пишет: бровс л..
Dima пишет: Я так понимаю, что база локальная. А сетевой вариант не пробовали?
|
|
|
|
| |
Пост N: 2695
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.03.13 20:52. Заголовок: Панченко пишет: Я т..
Панченко пишет: цитата: | Я так понимаю, что база локальная |
| Да Панченко пишет: цитата: | А сетевой вариант не пробовали? |
| Нет и смысла в этом не вижу без сервера базы данных. Вот если сделают поддержку в LetoDB этого RDD тогда другое дело. Хотя ради интереса завтра попробую , но результат уже предвижу.
|
|
|
|
| Администратор
|
Пост N: 2727
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.03.13 23:42. Заголовок: Dima пишет: Вот есл..
Dima пишет: цитата: | Вот если сделают поддержку в LetoDB этого RDD тогда другое дело. |
| Да я уже можно сказать что сделал. Осталось еще потестировать, подумать, не упустил ли что-нибудь, оформить все как положено, и выложить.
|
|
|
|
| |
Пост N: 2696
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.03.13 23:44. Заголовок: Pasha пишет: Да я у..
Pasha пишет: цитата: | Да я уже можно сказать что сделал |
| Готов тестить. Что нужно от меня ? Мыло ты знаешь если что.
|
|
|
|
| Администратор
|
Пост N: 2728
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 00:40. Заголовок: Отправил. Твой приме..
Отправил. Твой пример работает. Завтра постараюсь выложить на CVS, если глюков не обнаружится конечно.
|
|
|
|
| Администратор
|
Пост N: 2729
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 11:27. Заголовок: Поправил сброс фильт..
Поправил сброс фильтра, и сбросил изменения на CVS.
|
|
|
|
| |
Пост N: 2698
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 12:09. Заголовок: Pasha пишет: Отправ..
|
|
|
|
|
| |
Пост N: 2702
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 15:11. Заголовок: Pasha Все работает ..
Pasha Все работает отлично. Спасибо ! А собрать уже можно под Harbour 3.0 или все таки юзать 3.2 ?
|
|
|
|
| Администратор
|
Пост N: 2732
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 15:33. Заголовок: В связи с этим вопро..
В связи с этим вопрос, может быть кто подскажет В скрипте hbp для hbmk2 можно задать локальную переменную окружения: -env:__BM=yes и затем ее использовать: {__BM}source/client/letobmcl.prg т.е, включать в сборку модуль letobmcl.prg, только если задан макрос __BM В harbour 3.0 этот способ не работает, работает только в 3.2dev Как можно сделать сборку по условию, т.е. включать в проект модуль только тогда, когда задан определенный макрос ? Интересует способ, который работал бы и в более ранних версиях Harbour, хотя бы до 3.0
|
|
|
|
| |
Пост N: 2704
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 17:38. Заголовок: Первые глюки в LetoD..
Первые глюки в LetoDB и LBM Ставим Set filter to какой то , в BMDBFCDX BM_DBSETFILTERARRAY() вернет не пустой массив если в фильтре есть записи В Leto LBM_DBSETFILTERARRAY() вернет 0 да и фильтр получится не оптимизированным Установка Set filter to (или установка нового фильтра) не сбрасывает предыдущий фильтр , в BMDBFCDX это работает
|
|
|
|
| |
Пост N: 2705
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 17:42. Заголовок: Dima пишет: BM_DBSE..
Dima пишет: ошибся имел в виду BM_DBGETFILTERARRAY
|
|
|
|
| |
Пост N: 2706
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 18:07. Заголовок: Пример BMDBFCDX se..
Пример BMDBFCDX set filter to nomer==1 go top ? len(BM_DBGETFILTERARRAY()) // 37 set filter to go top ? len(BM_DBGETFILTERARRAY()) // 0 set filter to nomer==5 go top ? len(BM_DBGETFILTERARRAY()) //63 LETO set filter to nomer==1 go top ? len(LBM_DBGETFILTERARRAY()) // 0 set filter to go top ? len(LBM_DBGETFILTERARRAY()) // 0 set filter to nomer==5 go top ? len(LBM_DBGETFILTERARRAY()) //0
|
|
|
|
| Администратор
|
Пост N: 2734
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 18:09. Заголовок: Оказывается, в харбо..
Оказывается, в харборе есть такая глобальная настройка: Set(_SET_FORCEOPT. <lOnOff>) Для bmdbfcdx она означает, что по set filter будет выполнен цикл по всему файлу, и заполнен массив записей Если она включена, то фильтр будет устанавливаться медленно (из-за цикла), но работать потом мгновенно. Сейчас получается, он в сервере выключен. Это очень важный параметр, и автоматически его в сервере устанавливать нельзя. Наверное, надо сделать глобальную настройку в letodb.ini, или отдельную команду для этой настройки А есть еще и настройка RDDI_FORCEOPT, но в BMDBF она не используется.
|
|
|
|
| |
Пост N: 2707
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 18:17. Заголовок: Pasha пишет: или от..
Pasha пишет: цитата: | или отдельную команду для этой настройки |
| лучше команду мне кажется давать из клиента или включать(выключать) на автомате в зависимости от RDD
|
|
|
|
| Администратор
|
Пост N: 2735
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 18:30. Заголовок: Сейчас это глобальна..
Сейчас это глобальная настройка. Если ее включить, то по любой команде set filter будет выполняться полный перебор всей записей файла, даже без учета set scope Это может быть медленно, если файл большой. Но так работает BMDBF Кстати, мне не очень понравился способ, как выполняется цикл Примерно так: for i:= 1 to nCount goto(i) next я по своему опыту знаю, что такой цикл выполняется медленнее, чем цикл по skip. Но так в этом rdd у Przemek'a Кстати, у Miguel Angel Marchuet было по другому. Но в его варианте свои недостатки. У Przemeka все правильно и красиво, только этот момент сделан по другому.
|
|
|
|
| |
Пост N: 2708
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 18:34. Заголовок: Мдя , засада.... ..
Мдя , засада.... И да если установлен фильтр через LBM_DBSETFILTERARRAY() то снять его обычными командами не получается
|
|
|
|
| Администратор
|
Пост N: 2737
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 21:28. Заголовок: Dima пишет: А собра..
Dima пишет: цитата: | А собрать уже можно под Harbour 3.0 |
| С этим вопросом разобрался Этот макрос для сборки надо оказывается задавать в командной строке hbmk2: \harbour_30\bin\win\mingw\hbmk2 -env:__BM=yes letodb.hbp \harbour_30\bin\win\mingw\hbmk2 -env:__BM=yes rddleto.hbp
|
|
|
|
|
| Администратор
|
Пост N: 2738
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.03.13 21:30. Заголовок: Dima пишет: И да ес..
Dima пишет: цитата: | И да если установлен фильтр через LBM_DBSETFILTERARRAY() то снять его обычными командами не получается |
| dbClearFilter() должен снять Но это в сырцах на CVS, В тех, что я вчера прислал, этого еще не было
|
|
|
|
| |
Пост N: 2711
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.03.13 22:02. Заголовок: Pasha пишет: dbClea..
Pasha пишет: цитата: | dbClearFilter() должен снять |
| Понял , спасибо буду завтра разбираться.
|
|
|
|
| |
Пост N: 2712
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.03.13 11:04. Заголовок: Свежие сырцы слил и ..
Свежие сырцы слил и все пересобрал. dbClearFilter() фильтр НЕ СНЯЛ
|
|
|
|
| |
Пост N: 2714
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.03.13 15:37. Заголовок: Dima пишет: dbClear..
Dima пишет: цитата: | dbClearFilter() фильтр НЕ СНЯЛ |
| Паша так что делать то ? :)
|
|
|
|
| Администратор
|
Пост N: 2741
Зарегистрирован: 23.05.05
|
|
Отправлено: 11.03.13 19:22. Заголовок: Причину уже увидел, ..
Причину уже увидел, но исправление выложу позже. Надо и со стороны клиента кое-что реализовать для letodb+bm Заодно сделаю заполнение bitmap-массива для set filter
|
|
|
|
| |
Пост N: 2737
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.03.13 18:29. Заголовок: Pasha А если я став..
Pasha А если я ставлю фильтр вида LBM_DBSETFILTERARRAY({1,590,234,2345,7899,9000,700000}) В этом случае LETO_ISFLTOPTIM() вернет .F. , получается что фильтр ставится на клиенте. По идее должен ставится серверный фильтр или я не прав ?
|
|
|
|
| Администратор
|
Пост N: 2753
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.03.13 19:39. Заголовок: Да, поправлю..
Да, поправлю
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|