On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Pasha
Администратор




Пост N: 1937
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.05.11 19:04. Заголовок: Leto DB Server


Добавил функцию:

LETO_GROUPBY(cGroup, cFields, [cFilter], [xScopeTop], [xScopeBottom])

cGroup - имя поля, по которому группируются данные;
cFields - список числовых полей через запятую, которые суммируются. Символ # обозначает к-во записей в группе

Функция возвращает двумерный массив строк.
1-й элемент каждой строки - значение поля cGroup, следующие элементы суммы полей, заданных в cFields, или к-во записей в группе


Спасибо: 0 
Профиль
Ответов - 232 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [только новые]


AlexMyr



Пост N: 176
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.05.11 15:39. Заголовок: Паша, а на сервер об..


Паша, а на сервер обновления не сбрасывали?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1944
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.05.11 15:55. Заголовок: Конечно Но мы работа..


Конечно
Но мы работаем не с основной revision
Надо при checkout указать revision - не Head. а выбрать rel-1-mt1 revision

Спасибо: 0 
Профиль
AlexMyr



Пост N: 177
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.05.11 15:57. Заголовок: Понял, списибо...


Понял, спасибо.

Спасибо: 0 
Профиль
leo
постоянный участник


Пост N: 51
Зарегистрирован: 13.09.07
ссылка на сообщение  Отправлено: 22.05.11 12:51. Заголовок: А где на SVN нах..


А где на SVN находится Letodb?

Спасибо: 0 
Профиль
AlexMyr



Пост N: 178
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 22.05.11 22:05. Заголовок: Почему на svn? На CV..


Почему на svn? На CVS:

cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb login

cvs -z3 -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb co -P modulename

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1949
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.05.11 18:35. Заголовок: Добавил для leto_udf..


Добавил для leto_udf возможность передачи произвольного числа параметров любых типов на сервер, а также возврата результата любого типа. Для этого используются функции hb_serialize и hb_deserialize. Поскольку сервер сейчас собирается только под Harbour, для сборки клиента под xHarbour добавил версии этих функций от Harbour
Также добавил функцию на сервере:

LETO_RECLOCK( nUserStru [, nRecord] )

которая может вызываться из udf-функций

udf-функция может вернуть в качестве результата клиенту значение текущей записи с помощью вызова функции LETO_REC(). Клиент при этом должен вызвать функцию Leto_ParseRec для установки текущей записи.

Пример вызова с клиента:

Leto_ParseRec( Leto_Udf("UDF_AppendRec", <cFieldName>, [<cOrder>|<nOrder>]) )

Также в tests добавил пример udf-функции.


Спасибо: 0 
Профиль
AlexMyr



Пост N: 182
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.11 14:55. Заголовок: Паша, скачал rel-1-..


Паша,

скачал rel-1-mt, собираю с hbmk2: letodb.exe собирается, потом ищу библиотеку rddleto - не нахожу, нету даже папки lib, смотрю в корне валяется libletodb в rddleto.hbp вместо -olib/rddleto указано -oletodb. Соответсвенно не собираются тесты т.к. в rddleto.hbc указано libs=rddleto. Идут какие-то изменения? В readme ничего не нашел, все по старому и структура каталогов и названия библиотек.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1951
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.05.11 15:10. Заголовок: Библиотека стала так..


Библиотека стала так называться при сборке через hbmk2 после

2011-04-29 15:27 UTC+0300 Alexander Okhotnikov (alxokhotnikov/at/gmail.com)


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1952
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.05.11 15:12. Заголовок: В настоящее время мо..


В настоящее время можно на сервере в подгружаемом файле letoudf.prg писать полноценные udf-функции. UDF-функции с клиента можно передать произвольное количество параметров любых типов.
В функциях можно использовать обычные методы rdd, за исключением блокировок - вместо rlock/dbrlock/dbunlock надо использовать leto_reclock() и leto_recunlock(), поскольку блокировки выполняются не средствами rdd, а средствами leto.
Эти функции могут после выполнения каких-либо действий возвращать клиенту новую текущую запись с помощью вызова leto_Rec(), а клиент в свою очередь может принять эту текущую запись с помощью leto_parserec
Пример парочки таких функций я выложил: одна добавляет запись с заполняет значение ключевого поля, вторая - удаляет записи по указанному фильтру.
Но все это работает в текущей рабочей области.
Теперь как сделать работу в udf-функции с несколькими рабочими областями. Вызов серверного алиаса через leto_alias мне не очень нравится, поэтому возникла другая идея.
Сделать на клиенте функцию leto_areaid(), и передавать на сервер номера рабочих областей в качестве параметров.
В udf-функции эти номера можно использовать для вызова leto_SelectArea( nuserStru, nAreaId ), и в дальнейшем использовать это рабочую область
Для leto_reclock, leto_recunlock и leto_rec ввести еще один необязательный параметр - nAreaId
udf-функция могла бы возвращать массив с данными нескольких рабочх областей: {cRecBuf1, cRecBuf2, ...}, а на клиенте можно было бы обрабатывать этот массив вызовами leto_ParseRec
Только надо будет доработать leto_FreeArea, чтобы при завершении udf-функции освобождать рабочие области (кроме текущей).
Какие будут предложения ? Может быть, есть способ получше ?


Спасибо: 0 
Профиль
AlexMyr



Пост N: 183
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.11 15:15. Заголовок: Да я уже вижу, а смы..


Pasha пишет:

 цитата:
Библиотека стала так называться при сборке через hbmk2 после

2011-04-29 15:27 UTC+0300 Alexander Okhotnikov (alxokhotnikov/at/gmail.com)



Да я уже вижу, а смысл?

Спасибо: 0 
Профиль
AlexMyr



Пост N: 184
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.11 15:21. Заголовок: Pasha пишет: Какие ..


Pasha пишет:

 цитата:
Какие будут предложения ? Может быть, есть способ получше ?



Я думаю, что очень мало людей думает об этом, потому как сделаете так и будет.

Спасибо: 0 
Профиль
alx_on
постоянный участник


Пост N: 109
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 00:06. Заголовок: Pasha пишет: Вызов ..


Pasha пишет:

 цитата:
Вызов серверного алиаса через leto_alias мне не очень нравится


Чем плохо? Скорость (больше ничего на ум не приходит)? Ведь нагляднее и проще передать алиас.

 цитата:
Для leto_reclock, leto_recunlock и leto_rec ввести еще один необязательный параметр - nAreaId.
udf-функция могла бы возвращать массив с данными нескольких рабочх областей


Излишний функционал (к тому же с переделкой протокола).
Я вижу это так:
1. Открыли на клиенте все таблицы (либо сделать функцию открытия на сервере)
2. Вызвали leto_alias и leto_SelectArea (можно даже в переменной сохранить AreaID для скорости)
3. Собрали результат
4. Повторили п.2 для следующего параметра
5. Вернули массив
Ведь это обычный clipper/harbour -код

 цитата:
Только надо будет доработать leto_FreeArea, чтобы при завершении udf-функции освобождать рабочие области (кроме текущей)


leto_FreeArea отдает ВСЕ раб.области, открытые в этом потоке.

 цитата:
Какие будут предложения ? Может быть, есть способ получше ?


Единственная доработка, которая требуется, на мой взгляд (сам не использую пока UDF) - это открытие таблиц в UDF

Спасибо: 0 
Профиль
alx_on
постоянный участник


Пост N: 110
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 00:20. Заголовок: AlexMyr пишет: Идут..


AlexMyr пишет:

 цитата:
Идут какие-то изменения? В readme ничего не нашел, все по старому и структура каталогов и названия библиотек


Я, честно говоря, выложил версию с потоками "на посмотреть". Т.е. в корне папки исходников ничего не трогал. А оно как все завертелось!
У меня свои скрипты компиляции клиента. Можете Вы у себя переделаеть rddleto.hbp и rddleto.hbc? Опубликуете в этом форуме - я выложу на CVS.

Спасибо: 0 
Профиль
AlexMyr



Пост N: 185
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 09:08. Заголовок: alx_on пишет: Я, че..


alx_on пишет:

 цитата:
Я, честно говоря, выложил версию с потоками "на посмотреть".


Ясно, а все доработки потом перейдут в основную ветку или как?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1954
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.05.11 09:26. Заголовок: AlexMyr пишет: Ясно..


AlexMyr пишет:

 цитата:
Ясно, а все доработки потом перейдут в основную ветку или как?



Версия с потоками куда перспективнее, и она просто должна стать основной. Поэтому letodb без потоков даже не хочется трогать.
Хотелось бы, чтобы на новую версию посмотрел А.Кресин.

Спасибо: 0 
Профиль
AlexMyr



Пост N: 186
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 09:33. Заголовок: Pasha пишет: Хотело..


Pasha пишет:

 цитата:
Хотелось бы, чтобы на новую версию посмотрел А.Кресин.



А написать Александру не пытались? Что-то давно он сюда не заглядывал.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1955
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.05.11 09:38. Заголовок: alx_on пишет: Чем п..


alx_on пишет:

 цитата:
Чем плохо? Скорость (больше ничего на ум не приходит)? Ведь нагляднее и проще передать алиас.



Тогда еще на сервере надо добавить функцию leto_areaid() для текущей р/о, для 2-го параметра в leto_selectarea

Спасибо: 0 
Профиль
alx_on
постоянный участник


Пост N: 111
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 12:57. Заголовок: Руки дошли до семейс..


Руки дошли до семейства LETO_VAR*()
Переделал под текущую схему (с потоками)
Вроде работает. Кто использует? Проверьте на реальном проекте на нюансы...

Спасибо: 0 
Профиль
AlexMyr



Пост N: 187
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 13:10. Заголовок: Вот что получил при ..


Вот что получил при сборке (/* $Id: Changelog,v 1.350.2.14 2011/05/31 09:51:51 aokhotnikov Exp $ */):

hbmk2: Compiling...
hbmk2: C/C++ compiler command:
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -I../../../../include ../../../../bin/.hbmk/win/mingw/server.c ../../../../bin/.hbmk/win/mingw/errorsys.c ../../../../bin/.hbmk/win/mingw/common.c ../../../../source/server/errint.c ../../../../source/server/leto_win.c ../../../../source/server/letoacc.c ../../../../source/server/letovars.c ../../../../source/server/letofunc.c ../../../../source/server/leto_2.c ../../../../source/common/blowfish.c ../../../../source/common/common_c.c ../../../../bin/.hbmk/win/mingw/_hbmkaut_server.c
../../../../source/server/letofunc.c: In function 'letoFillTransInfo':
../../../../source/server/letofunc.c:6776:7: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6781:7: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6794:25: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6794:25: warning: format '%d' expects type 'int *', but argument 4 has type 'HB_USHORT *'
../../../../source/server/letofunc.c: In function 'leto_Trans':
../../../../source/server/letofunc.c:6865:16: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6885:32: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6885:32: warning: format '%d' expects type 'int *', but argument 4 has type 'HB_USHORT *'
../../../../source/server/letofunc.c: In function 'ParseCommand':
../../../../source/server/letofunc.c:7222:45: error: 'mutex_VARS' undeclared (first use in this function)
../../../../source/server/letofunc.c:7222:45: note: each undeclared identifier is reported only once for each function it appears in
hbmk2: Error: Running C/C++ compiler. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -I../../../../include ../../../../bin/.hbmk/win/mingw/server.c ../../../../bin/.hbmk/win/mingw/errorsys.c ../../../../bin/.hbmk/win/mingw/common.c ../../../../source/server/errint.c ../../../../source/server/leto_win.c ../../../../source/server/letoacc.c ../../../../source/server/letovars.c ../../../../source/server/letofunc.c ../../../../source/server/leto_2.c ../../../../source/common/blowfish.c ../../../../source/common/common_c.c ../../../../bin/.hbmk/win/mingw/_hbmkaut_server.c


Спасибо: 0 
Профиль
alx_on
постоянный участник


Пост N: 112
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 13:45. Заголовок: AlexMyr Странно... ..


AlexMyr
Странно...
Перевыложил

Спасибо: 0 
Профиль
Ответов - 232 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 18
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет