Автор | Сообщение |
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, или к-во записей в группе
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
All
[см. все]
|
|
AlexMyr
|
| |
Пост N: 176
Зарегистрирован: 11.06.10
|
|
Отправлено: 20.05.11 15:39. Заголовок: Паша, а на сервер об..
Паша, а на сервер обновления не сбрасывали?
|
|
|
Pasha
|
| Администратор
|
Пост N: 1944
Зарегистрирован: 23.05.05
|
|
Отправлено: 20.05.11 15:55. Заголовок: Конечно Но мы работа..
Конечно Но мы работаем не с основной revision Надо при checkout указать revision - не Head. а выбрать rel-1-mt1 revision
|
|
|
AlexMyr
|
| |
Пост N: 177
Зарегистрирован: 11.06.10
|
|
Отправлено: 20.05.11 15:57. Заголовок: Понял, списибо...
Понял, спасибо.
|
|
|
leo
|
| постоянный участник
|
Пост N: 51
Зарегистрирован: 13.09.07
|
|
Отправлено: 22.05.11 12:51. Заголовок: А где на SVN нах..
А где на SVN находится Letodb?
|
|
|
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
|
|
|
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-функции.
|
|
|
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 ничего не нашел, все по старому и структура каталогов и названия библиотек.
|
|
|
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)
|
|
|
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-функции освобождать рабочие области (кроме текущей). Какие будут предложения ? Может быть, есть способ получше ?
|
|
|
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) |
| Да я уже вижу, а смысл?
|
|
|
AlexMyr
|
| |
Пост N: 184
Зарегистрирован: 11.06.10
|
|
Отправлено: 30.05.11 15:21. Заголовок: Pasha пишет: Какие ..
Pasha пишет: цитата: | Какие будут предложения ? Может быть, есть способ получше ? |
| Я думаю, что очень мало людей думает об этом, потому как сделаете так и будет.
|
|
|
|
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
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 110
Зарегистрирован: 07.07.09
|
|
Отправлено: 31.05.11 00:20. Заголовок: AlexMyr пишет: Идут..
AlexMyr пишет: цитата: | Идут какие-то изменения? В readme ничего не нашел, все по старому и структура каталогов и названия библиотек |
| Я, честно говоря, выложил версию с потоками "на посмотреть". Т.е. в корне папки исходников ничего не трогал. А оно как все завертелось! У меня свои скрипты компиляции клиента. Можете Вы у себя переделаеть rddleto.hbp и rddleto.hbc? Опубликуете в этом форуме - я выложу на CVS.
|
|
|
AlexMyr
|
| |
Пост N: 185
Зарегистрирован: 11.06.10
|
|
Отправлено: 31.05.11 09:08. Заголовок: alx_on пишет: Я, че..
alx_on пишет: цитата: | Я, честно говоря, выложил версию с потоками "на посмотреть". |
| Ясно, а все доработки потом перейдут в основную ветку или как?
|
|
|
Pasha
|
| Администратор
|
Пост N: 1954
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.11 09:26. Заголовок: AlexMyr пишет: Ясно..
AlexMyr пишет: цитата: | Ясно, а все доработки потом перейдут в основную ветку или как? |
| Версия с потоками куда перспективнее, и она просто должна стать основной. Поэтому letodb без потоков даже не хочется трогать. Хотелось бы, чтобы на новую версию посмотрел А.Кресин.
|
|
|
AlexMyr
|
| |
Пост N: 186
Зарегистрирован: 11.06.10
|
|
Отправлено: 31.05.11 09:33. Заголовок: Pasha пишет: Хотело..
Pasha пишет: цитата: | Хотелось бы, чтобы на новую версию посмотрел А.Кресин. |
| А написать Александру не пытались? Что-то давно он сюда не заглядывал.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1955
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.11 09:38. Заголовок: alx_on пишет: Чем п..
alx_on пишет: цитата: | Чем плохо? Скорость (больше ничего на ум не приходит)? Ведь нагляднее и проще передать алиас. |
| Тогда еще на сервере надо добавить функцию leto_areaid() для текущей р/о, для 2-го параметра в leto_selectarea
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 111
Зарегистрирован: 07.07.09
|
|
Отправлено: 31.05.11 12:57. Заголовок: Руки дошли до семейс..
Руки дошли до семейства LETO_VAR*() Переделал под текущую схему (с потоками) Вроде работает. Кто использует? Проверьте на реальном проекте на нюансы...
|
|
|
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
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 112
Зарегистрирован: 07.07.09
|
|
Отправлено: 31.05.11 13:45. Заголовок: AlexMyr Странно... ..
AlexMyr Странно... Перевыложил
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
All
[см. все]
|
|