Форум » LetoDB, HbNetio. » Leto DB Server (продолжение 10) (продолжение) » Ответить

Leto DB Server (продолжение 10) (продолжение)

Dima: Продолжаем тут

Ответов - 191, стр: 1 2 3 4 5 6 7 8 9 10 All

alkresin: nbatocanin пишет: Есть ли где описание команды в дебуг режиме? Нет. Посмотреть можно только по исходникам - source/client/letocl.c

alkresin: Я немного изменил систему нумерации версий LetoDb - добавил туда номер сборки ( build ), чтобы можно было, не меняя все время основной номер версии, выкладывать на Sourceforge обновленные пакеты. Выложен letodb-2.15-b2.src.zip

Dima: alkresin Раздел создавать по LetoDB Server ? Название такое и будет LetoDB Server ?


alkresin: Я бы назвал "LetoDB, HbNetio и пр." "пр." - на всякий случай :) И в разделе GUI подзаголовок, наверное, надо переименовать "GUI в [x]Harbour"

finder: Пользовательские переменные в пользовательских функциях не работают. Попытка создать переменную приводит к падению сервера. При этом без разницы указан nUserStru или просто NIL. letoudf.prg #include "rddleto.ch" Function VarTest( nUserStru ) LETO_VARSET( nUserStru, 'TestGroupName', 'TestVarName', 'TestVarContent', LETO_VCREAT ) //LETO_VARSET( NIL, 'TestGroupName', 'TestVarName', 'TestVarContent', LETO_VCREAT ) Return .T. testvars.prg #include "rddleto.ch" #define LETOSERVER "//127.0.0.1:2812/" Procedure Main(a) local aa REQUEST LETO RDDSETDEFAULT("LETO") leto_Connect( LETOSERVER ) ? "aa:=LETO_UDF( LETOSERVER+'VarTest' )", aa:=LETO_UDF( LETOSERVER+'VarTest' ) ? 'valtype( aa )', valtype( aa ) return ? 'hb_valtoexp( aa )', hb_valtoexp( aa ) return ? 'hb_valtoexp(LETO_VARGETLIST())', hb_valtoexp(LETO_VARGETLIST()) return ? aa:=leto_vargetlist() return ? hb_valtoexp(leto_vargetlist()) return Возможно это как-то победить?

alkresin: finder пишет: Возможно это как-то победить? Победил.

finder: УРААА!!! Заработало! И похоже работает даже из UDF_Init Буду тестировать в расширенном варианте. Огромное Вам, Александр, человеческое СПАСИБО! Небольшое уточнение, это уже будет окончательно без откатов и насовсем?

alkresin: finder пишет: Небольшое уточнение, это уже будет окончательно без откатов Конечно. Там были реальные ошибки, зачем откатывать. и насовсем? До тех пор, пока новых ошибок не наплодим

finder: Эта команда leto_vardel( 'GroupNone', '' ) - удаляет группу со всеми переменными? Мусор оставлять за собой такое удаление не будет? При попытке удалить несуществующую группу переменных - сервер падает, значит ли это, что надо проверять ее наличие со стороны клиента перед удалением? При удалении отсутствующих переменных внутри группы такого не замечено.

alkresin: finder пишет: Эта команда leto_vardel( 'GroupNone', '' ) - удаляет группу со всеми переменными? Да. При попытке удалить несуществующую группу переменных - сервер падает Пример на стол. Мне не удалось воспроизвести падение сервера при удалении несуществующей группы.

alkresin: Впрочем, я сейчас исправил возможный источник проблемы, но у меня и так почему-то работало.

SergKis: alkresin подключение триггера в letodb не работает (в 2-х поточной версии все Ok): letodb.ini : ... Trigger = my_Trigger ... [pre2] FUNCTION my_Trigger( nEvent, nArea, nPos, xTrigVal ) dbInfo(DBI_TRIGGER, .F.) WrLog( Procname()+" "+ hb_valtoexp({ nEvent, nArea, nPos, xTrigVal }) ) dbInfo(DBI_TRIGGER, .T.) RETURN .T. [/pre2] включение этой функции в letodb.hrb или letodb.prg не срабатывает ни разу при операциях над таблицей это можно побороть ?

Dima: SergKis А каков функционал у dbInfo(DBI_TRIGGER...... , для чего она ?

finder: alkresin пишет: Пример на стол. Мне не удалось воспроизвести падение сервера при удалении несуществующей группы. #include "rddleto.ch" #define LETOSERVER "//127.0.0.1:2812/" Procedure Main(a) local cTmp:='', aa REQUEST LETO RDDSETDEFAULT("LETO") leto_Connect( LETOSERVER ) ? leto_vardel( 'GroupNone', '' ) ? leto_vardel( 'GroupNone', '' ) return сервер запускал без letoudf.hrb для чистоты эксперимента результат выполнения Breakdown at: 2015.04.15 11:11:46 Unrecoverable error 6005: Exception %s at address %s SIGSEGV (nil) ------------------------------------------------------------------------ User: 127.0.0.1 localhost testvars Command: var P.S. Только что пересобрал сервер. Теперь при тесте он не падает, но тестовое приложение зависает ничего не выводя т.е. как я понимаю где-то внутри функции удаления группы.

alkresin: finder пишет: Только что пересобрал сервер. Теперь при тесте он не падает, но тестовое приложение зависает ничего не выводя т.е. как я понимаю где-то внутри функции удаления группы. Исправил

finder: alkresin пишет: Исправил Спасибо, сейчас отрабатывает.

SergKis: Dima пишет:А каков функционал у dbInfo(DBI_TRIGGER...... , для чего она ? Сейчас триггер заполняет поля : IDNNN (N10) - идентификатор от поля + (клиент 2-х поточной версии не понимает новые поля) IDDATEADD(C17) - дата добавления Timestamp -> в строку IDDATEUPD (C17) - дата модификации Timestamp -> в строку IDDATEDEL (C17) - дата удаления Timestamp -> в строку эти поля обязательны по закондательству и планировал на новой версии перенести с клиента ведение логов по изменению таблиц.

alkresin: SergKis пишет: включение этой функции в letodb.hrb или letodb.prg не срабатывает ни разу при операциях над таблицей это можно побороть ? Можно, конечно. Только надо сначала разобраться - я не смотрел еще в ту сторону.

alkresin: По-видимому, дело в том, что новые потоки не наследуют RDDI_... установки, их надо переустанавливать для каждого вновь создаваемого потока.

SergKis: alkresin пишет:По-видимому, дело в том, что новые потоки не наследуют RDDI_... установки, наверное, правильно, устанавливать "свой" триггер только для нужной области (с клиента), но общий, в некоторых, ситуациях лучше и лежать триггеру лучше в letodb.hrb - для клиента свой hrb и триггеры



полная версия страницы