You are not logged in.
Sry i thought my description was clear.
Use Example 30
To reproduce rename AuthorView.html to AuthorView_.html // The code where a template is missing must be reached.
Then start the example --> Exception in creating new AuthorView.html and Program - End.
Hi AB,
in mormotmvc.pas an exception raises at line 732 :
info.interfaceName := fFactory.InterfaceTypeInfo^.Name;Exception: "Erste Gelegenheit für Exception bei $74BB4598. Exception-Klasse EDocVariant mit Meldung 'Impossible to find "interfaceName" property in an array'. Prozess Service.exe (3204)"
cause interfaceName is unknown here.
To reproduce rename one if the existing View - Names / or View Files in the Folder in Sample 30
ty i will think about it
we actually use Clientdriven to cache some Data needed as long as the client is connected and it works perfect.
Hi AB i read your concerns about WiredMonkey, are there any plans to change their GPL to LGPL ?
May be if they see what's going on with mongoDB and mORMot they may change it.
(Did you speak to them ?)
Hi Arnaud
i'm thinking about writing some templates under FireMonkey(NEXTGEN - iOS,Android)
and need your Opinion if SynMustache is easy to port to FireMonkey NEXTGEN Compiler ?
I looked at Firebird and i think this is only for the people who do not have any security problems and who don't care about google looking at their data.
Hi AB i think you are an performance enthusiast and me too. But the ClientDataSet itself is something for the clicker under the programmer who want's to use "LiveBindings".
Correct me if i am wrong. Here does not performance count but RAD.
We also use FireMonkey for iOS and Android development of our software.
However, without ClientDataSet. Here I am of the same opinion as AB.
We write simple SOA interface functions or use REST to access TSQLRecord tables.
It's fast, safe and simple.
I think that you can implement the ClientDataSet with a simple SOA / interface.
Hi Arnoud,
Happy New Year
seem's that i made an error by copy and Paste!
I moved the 2 needed functions aut of ISDWS and added
{$if defined(ISDWS) or defined(IOS) or defined(ANDROID)}
around it to have it on all 3 Platforms and not to modify too much of your code.
The reason: i want to use the ISO8601 Format to save "Registry" - DateTime Values on all Platforms.
Hi Ab i need this 2 Functions for iOS and Android. I just modified SynCrossPlatformSpecific.pas.
{$ifdef ISDWS}
{$if defined(IOS) or defined(ANDROID)}
function DateTimeToIso8601(Value: TDateTime): string;
function Iso8601ToDateTime(const Value: string): TDateTime;
{$ifend}
{$if defined(ISDWS)}
procedure DoubleQuoteStr(var text: string);
function IdemPropName(const PropName1,PropName2: string): boolean;
function StartWithPropName(const PropName1,PropName2: string): boolean;
@@ -330,14 +337,10 @@ procedure DecodeDate(Value: TDateTime; var Y,M,D: word);
function TryEncodeDate(Y,M,D: integer; var Value: TDateTime): boolean;
function TryEncodeTime(HH,MM,SS,MS: integer; var Value: TDateTIme): boolean;
function NowToIso8601: string;
function DateTimeToIso8601(Value: TDateTime): string;
function Iso8601ToDateTime(const Value: string): TDateTime;
function TryStrToInt(const S: string; var Value: integer): Boolean;
function TryStrToInt64(const S: string; var Value: Int64): Boolean;
function StrToInt64Def(const S: string; const def: Int64): Int64;
function UpCase(ch: Char): Char; inline;
function GetNextCSV(const str: string; var index: Integer; var res: string;
Sep: char): boolean;
type
/// which kind of document the TJSONVariantData contains
@@ -371,7 +374,7 @@ function ValueToJSON(Value: variant): string; external 'JSON.stringify';
// - match function signature as defined in SynCrossPlatformJSON
function JSONToValue(JSON: string): variant; external 'JSON.parse';
{$endif}
{$ifend}
...
try
@@ -812,7 +820,9 @@ function NowToIso8601: string;
begin
result := DateTimeToIso8601(Now);
end;
{$ifend}
{$if defined(ISDWS) or defined(IOS) or defined(ANDROID)}
function DateTimeToIso8601(Value: TDateTime): string;
begin // e.g. YYYY-MM-DD Thh:mm:ss or YYYY-MM-DDThh:mm:ss
if Value<=0 then
@@ -858,8 +868,9 @@ begin // YYYY-MM-DD Thh:mm:ss or YYYY-MM-DDThh:mm:ss
end;
end;
end;
{$ifend} // itSDS
{$if defined(ISDWS)}
{ TJSONVariantData }
{$HINTS OFF}
@@ -955,7 +966,7 @@ begin
result := TSMSHttpConnectionClass;
end;
{$endif ISDWS}
{$ifend ISDWS}Yes V664 , Rad Studio XE7 Upd1, but this Warning i have since the beginning of CrossPlatform. I just wanted to announce it. May Be you have an idea to remove it.
Hi Ab everytime i compile with SynPlatFormRest i get this Warning: W1029
Don't know how to fix it ?!
c:\program files (x86)\embarcadero\studio\15.0\Bin\CodeGear.Delphi.Targets : warning W1029: W1029 constructor 'TSQLRecord.CreateAndFillPrepareMany' doppelt mit identischen Parametern; Zugriff von C++ nicht möglich
c:\program files (x86)\embarcadero\studio\15.0\Bin\CodeGear.Delphi.Targets : warning W1029: W1029 constructor 'TSQLRecord.CreateAndFillPrepare' doppelt mit identischen Parametern; Zugriff von C++ nicht möglich
c:\program files (x86)\embarcadero\studio\15.0\Bin\CodeGear.Delphi.Targets : warning W1029: W1029 constructor 'TSQLRecord.CreateAndFillPrepareMany' doppelt mit identischen Parametern; Zugriff von C++ nicht möglich
c:\program files (x86)\embarcadero\studio\15.0\Bin\CodeGear.Delphi.Targets : warning W1029: W1029 constructor 'TSQLRecord.CreateAndFillPrepare' doppelt mit identischen Parametern; Zugriff von C++ nicht möglichDo you have an idea to solve it ?
Frohe Weihnachten und einen guten Rutsch aus Bochum
I made some Performance Test with my Server. The Times for ZEOS and UniDAC in my case are the Same. I went back to UniDAC.
At first: I like to use 64Bit Services cause my Windows Servers are also 64Bit.
for this reason i made some Tests:
I wanted to include 64Bit sqlite.obj in my Service. Here i get the Problem that my bcc64 raises an Exception and terminates (just call bcc64 at cmd) very serious !
May be anyone has a tip for me ?!
Normally i use UniDac with MySQL - Direct.
Everything is fine under 32/64Bit - except Performance as AB stated.
So i tried ZEOS and found out that ZEOS uses libMySQL.dll.
Here i made a workaround cause i like to try 32/64Bit service in the same Folder.
I renamed the 64Bit MySQL to libMySQL64.dll and added some code to ZEOS if i compile under 64Bit.
Is there a better way ?
Hi AB - great Work - with the new Wrapper my TResult as wished above
But how can i reuse a record not directly used as Interface function Result ?
TResult : record erfolgJN : RawUtf8; fehlertext : RawUtf8; hinweistext : RawUtf8; end; TResultRecord1 = record resultRec : TResult; FResult1 : RawUtf8; FResult2 : RawUtf8; FResult3 : RawUtf8; FResult4 : RawUtf8; end; TResultRecord2 = record resultRec : TResult; FResult1 : RawUtf8; FResult2 : RawUtf8; end;in this case TResult is not defined in the Wrapper Client.
in this case i have to add 3 TTextWriter- extensions in initializatioin:
const
__TResult = 'erfolgJN RawUtf8 fehlertext RawUtf8 hinweistext RawUtf8';
__TResultRecord1 = 'resultRec Tresult FResult1 RawUtf8 FResult2 RawUtf8 FResult3 RawUtf8 FResult4 RawUtf8';
__TResultRecord2 = 'resultRec Tresult FResult1 RawUtf8 FResult2 RawUtf8';
initialization
TTextWriter.RegisterCustomJSONSerializerFromText(TypeInfo(TResult),__TResult);
TTextWriter.RegisterCustomJSONSerializerFromText(TypeInfo(TResultRecord1),__TResultRecord1);
TTextWriter.RegisterCustomJSONSerializerFromText(TypeInfo(TResultRecord2),__TResultRecord2);And in my Client i can write some special code for TResult ![]()
tyvm work's
tyvm AB it seem's to work.
I'll try the generated wrapper and report.
I fixed this Problem for me - with new {$define USEZ_STREAM}
line 157
{$ifdef FPC}
{$define USEZLIB}
{$define USEZ_STREAM}
{$ifdef MSWINDOWS} // avoid link to zlib1.dll
{$define USEPASZLIB}
{$endif}
{$else}
{$ifdef Win32}
{$define USEINLINEASM}
// if defined, we use a special inlined asm version for uncompress:
// seems 50% faster than BC++ generated .obj, and is 3KB smaller in code size
{$else}
{$define USEZLIB}
{$define USEZ_STREAM}
{$endif}
{$endif}
...
line 293
{$ifdef USEZ_STREAM}
TZStream = z_stream;
{$else}
TZStream = record
next_in : PAnsiChar;
avail_in : cardinal;
total_in : cardinal;
next_out : PAnsiChar;
avail_out : cardinal;
total_out : cardinal;
msg : PAnsiChar;
state : pointer;
zalloc : pointer;
zfree : pointer;
opaque : pointer;
data_type: integer;
adler : cardinal;
reserved : cardinal;
end;
{$endif}I get this Exception if i open the Wrapper - Page on HTML Server.
I use my own derived TDFSQLAuthGroup from TSQLAuthGroup which is added to the TSQLModel.
the Exceptions raised in : ContextFromInfo(wSQLRecord, 'TSQLAuthGroup', ...) Line 555 where Model.TableExact is searched for TSQLAuthGroup.
I 've only my own AuthGroup Class in the Model.
Line 4348:
function deflateInit2_(var strm: TZStream; level: integer; method: integer; windowBits: integer; memLevel: integer;strategy: integer; version: PAnsiChar; stream_size: integer): integer;
begin
result := {$ifdef USEPASZLIB}paszlib.{$else}ZLib.{$endif}deflateInit2_(strm,level,method,windowBits,memLevel,strategy,version,stream_size);
end;Parameter Error
if i change Line 291 to {$ifndef USEPASZLIB} from {$ifdef USEPASZLIB} it works but than the 32Bit does not work !
also interested in local storage ![]()
Hi AB i found the solution:
i have to add this at the bottom.
__TResultRecord =
'resultRec { erfolgJN RawUtf8 fehlertext RawUtf8 hinweistext RawUtf8} FResult1 RawUtf8 FResult2 RawUtf8 FResult3 RawUtf8 FResult4 RawUtf8';
initialization
TTextWriter.RegisterCustomJSONSerializerFromText(TypeInfo(TResultRecord),__TResultRecord);But how can i reuse a record not directly used as Interface function Result ?
TResult : record
erfolgJN : RawUtf8;
fehlertext : RawUtf8;
hinweistext : RawUtf8;
end;
TResultRecord1 = record
resultRec : TResult;
FResult1 : RawUtf8;
FResult2 : RawUtf8;
FResult3 : RawUtf8;
FResult4 : RawUtf8;
end;
TResultRecord2 = record
resultRec : TResult;
FResult1 : RawUtf8;
FResult2 : RawUtf8;
end;in this case TResult is not defined in the Wrapper Client.
XE7 Upd1:
the following Deklaration
TResultRecord = record
F : record
erfolgJN : RawUtf8;
fehlertext : RawUtf8;
hinweistext : RawUtf8;
end;
FResult1 : RawUtf8;
FResult2 : RawUtf8;
FResult3 : RawUtf8;
FResult4 : RawUtf8;
end;results in generated wrapper code:
TResultRecord = record
F: :TResultRecord.:1;
FResult1: string;
FResult2: string;
FResult3: string;
FResult4: string;
end;Hi AB i found out that the type RawJSON does not work in the record. I replaced it with RawUtf8 and no error occures.
I use XE7, very serious is the Result - Handling in the Debugger on the server - code.
Normal RawJSON - Results without record work as expected
Hi AB,
I'm enhancing my Interface Stuff an liked to create the following function:
RDetails = record
FResult1 : RawJSON;
FResult2 : RawJSON;
FResult3 : RawJSON;
FResult4 : RawJSON;
end;
function Testfunction1(const AIDs : RawJSON) : RDetails;
function Testfunction2(const AIDs : RawJSON; var ADetails : RDetails) : RawJSON;The Server runs and the CrossplatformClient with generated wrapper also
But the client does not receive the Result
with Testfunction1 Error received 0 parameters (expected 1)
with Testfunction2 Error received 0 parameters (expected 2)
What is wrong ?
TY, i took the first one. But Have one Problem with SeekFirst
Your code should read:
n := 0;
while table.Step(n=0) do inc(n); or
n := 0;
bSeekFirst := true;
while table.Step(bSeekFirst) do begin
inc(n);
bSeekFirst := false;
end;cause normally you have to SeekFirst ![]()
Could there be an more elegant way to do the SeekFirst ?
Normally in Delphi you do something like:
table.First
while not table.eof do
table.Next;
end;Both Versions hae their Advantages.
TYVM
Sometimes i have a board in front of the head.
Hi AB,
if i use nonExpanded Format, the Last Value is RowCount.
ATM i'm missing this Property in TJSONTable.
or is it fast enough to use
JSONVariant(JSON).rowCount
May be i found the solution. But it looks very complicated ?!
function Getxyz(cinst AStatus : RawJSON) : RawJSON;
var
Stmt : ISQLDBRows;
LAStatus : array of TVarRec;
LVStatus : variant;
i : integer;
sFragezeichen : RawUtf8;
begin
LVStatus := _JsonFast(AStatus);
SetLength(LAStatus, DocVariantData(LVStatus).Count);
sFragezeichen := '';
for i := 0 to DocVariantData(LVStatus).Count-1 do begin
if Length(sFragezeichen) > 0 then
sFragezeichen := sFragezeichen + ',';
VariantToVarRec(DocVariantData(LVStatus).Values[i], LAStatus[i]);
sFragezeichen := sFragezeichen + '?';
end;
Stmt := Connection.Execute('select * from tabelle where status in (' + sFragezeichen + ')', LAStatus);
exit(Stmt.FetchAllAsJSON(false));
end;is there an easier way ?
Hi AB i have a delphi question i can not solve by myself:
I'm writing an interface with Mormot. One Param is RawJSON containing an array auf Strings.
I wan't to give the Strings of this array as Params to:
TSQLDBConnectionProperties.Execute(const aSQL: RawUTF8; const Params: array of const
so i have to create an dynamic array of const and add some RawUtf8 Values to it.
But i dont' know how to do this ?!
var
pArray : array of const; // does not work
pArray : TVarRec; // does
begin
Connection.Execute('select * from tabelle where id in [?,?,?,?]', pArray)
the ? are generated for every array item.
Can you help me how to code this ?
Hi AB there is a liitle Problem with mORMot.pas line 9414
procedure InternalLog(Format: PWinAnsiChar; const Args: array of const;
Level: TSynLogInfo); overload;
{$ifdef HASINLINE}inline;{$endif}
/// internal method used by Delete(Table,SQLWhere) methodthis procedure cannot be inline cause it has array of const as param.
My Work around: I documented Inline out ![]()
Hi AB,
i found a little Bug in your Index - Name generation if IndexName Length > 27 Chars.
I create a unique index in InitializeTable. The Tablename and the Fieldname together is longer than 40 chars.
Everytime i start my Program a new Index is generated.
The Reason is that the Indexname is different every time !
I saw in your name generation that you append a tickcount - may be that's the reason why.
The Idea to generate a Unique ID from the names sounds accectable.
My private idea is:
Can you modify the Indexname Generation depending on the Database Type ?
Some Databases support Indexnames longer than 32 chars (Seems to be an outdated limit coming from former times i think)
I remember the old btrieve day's on novell.
ATM i specify the IndexName on my own. But there i have a problem with an Index i create for derived Classes. In that case i have to generate a unique Index Name in the parent class else it will not be created:
class procedure TSQLDFExampleTableReferenzRecord.InitializeTable(Server: TSQLRestServer; const FieldName: RawUTF8; Options: TSQLInitializeTableOptions);
begin
if (FieldName = '') or (FieldName = 'LID') then
Server.CreateSQLIndex(Self, 'Fieldname', false, 'IDX' + Self.ClassName.Substring(4, Self.Classname.Length - 10)+'Fieldname');
end;here i would like to use '' as indexname but like also to get a readable Indexname.
Hi AB i found the reason for the Exception in our code.
The only thing i need is to disable the MessageBox if it runs as service.
Maybe anyone has an idea.
Hi AB i had a look at the Server and found out something new:
i started the service in console Mode. After pressing ENTER to stop it an exception Messagebox comes onto the Screen showing the Exception Number.
I think this MessageBox comes also in the Service code.
cause no screen interaction is allowed, it is not shown.
The OS kills the Process after 60s.
What do you think
Is it possible to disable this MessageBox ?
Hi AB i checked the Log and found the line above, so i'm right to suppose I'm using http.sys ?
here the shutdown code of the log (I replaced the real server names with s1-s8):
09:31:14 Info 1 TDFCloudService(0000000001354F70) DFCloud: command 4 received from OS
09:31:14 Leave 1 00.000.291
09:31:14 Enter 1 TDFCloudService(0000000001354F70).00000000006976A3
09:31:14 Info 1 TDFCloudService(0000000001354F70) DFCloud: command 1 received from OS
09:31:14 Info 1 TDFCloudService(0000000001354F70) DFCloud ReportStatus(Stopping,0,0)
09:31:14 Enter 1 TDFCloudService(0000000001354F70).0000000000A7E16F
09:31:14 Info 1 Server {"THttpApiServer(00000000012F8E00)":{"Cloned":false,"RegisteredUrl":"http://+:5001/s1/,http://+:5001/s2/,http://+:5001/s3/,http://+:5001/s4/,http://+:5001/s5/,http://+:5001/s6/,http://+:5001/s7/,http://+:5001/s8/,http://+:5001/","HTTPQueueLength":1000,"MaxBandwidth":-1,"MaxConnections":-1,"APIVersion":"HTTP API 2.0"}} gestoppt durch {"TSQLHttpServer(00000000013FFFA0)":{}}
09:31:14 Enter 1 TSQLHttpServer(00000000013FFFA0).00000000006C8088
09:31:14 Info 1 TSQLHttpServer(00000000013FFFA0) {"THttpApiServer(00000000012F8E00)":{"Cloned":false,"RegisteredUrl":"http://+:5001/s1/,http://+:5001/s2/,http://+:5001/s3/,http://+:5001/s4/,http://+:5001/s5/,http://+:5001/s6/,http://+:5001/s7/,http://+:5001/s8/,http://+:5001/","HTTPQueueLength":1000,"MaxBandwidth":-1,"MaxConnections":-1,"APIVersion":"HTTP API 2.0"}} finalized for 8 server(s)
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 25 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4012 ThreadCount=31
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 28 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2436 ThreadCount=30
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 11 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2948 ThreadCount=29
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 7 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3464 ThreadCount=28
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 5 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1408 ThreadCount=27
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 4 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3544 ThreadCount=26
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 34 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1768 ThreadCount=25
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 24 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2604 ThreadCount=24
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 23 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1380 ThreadCount=23
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 21 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3868 ThreadCount=22
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 17 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4068 ThreadCount=21
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 20 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1516 ThreadCount=20
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 26 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1180 ThreadCount=19
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 19 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=4040 ThreadCount=18
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 32 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3400 ThreadCount=17
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 18 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3816 ThreadCount=16
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 13 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1364 ThreadCount=15
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 30 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2344 ThreadCount=14
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 12 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3452 ThreadCount=13
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=11
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=11
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=11
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=11
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=10
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=10
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=10
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=9
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=9
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=9
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=9
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=10
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=11
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=11
09:31:14 Trace 8 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2332 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=12
09:31:14 Trace 29 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3024 ThreadCount=11
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=11
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=10
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=10
09:31:14 Trace 27 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3164 ThreadCount=10
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=10
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=9
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=9
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=9
09:31:14 Trace 10 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2584 ThreadCount=9
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 6 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1444 ThreadCount=8
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 3 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3856 ThreadCount=7
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 33 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1376 ThreadCount=6
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 31 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3552 ThreadCount=5
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 22 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3208 ThreadCount=4
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 16 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1468 ThreadCount=3
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 15 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=3724 ThreadCount=2
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 14 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=2116 ThreadCount=1
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Trace 9 TSQLRestServerDB.EndCurrentThread(THttpApiServer) ThreadID=1432 ThreadCount=0
09:31:14 Leave 1 00.002.250
09:31:14 Exception 1 EInvalidPointer ("Ungültige Zeigeroperation") at 0000000000408E72 The Shutdown seems to start within 1s but at the end there is a EInvalidPointer Exception. May be that the service stops here and the os waits for something and sets a timeout to kill the process ?!
Hi AB,
the Problem exists longer but had no time to write it.
I have programmed a mORMot service which has 8 Database Models and therefore 8 .db3 SQLite Files.
It also has 2 MVC - Folders.
For every Database it serves the wrapper and the SynDB.
If i start it as Console App it shut's down within 1 second.
But if i stop it with net stop servicename it takes 60s to shut down.
In the Log i can not find the cause for this 60 seconds.
Do you have a clue ?
Hi AB, i had to think about it.
I use Crossplatform for actually the follwing cases:
FMX - iOS: This is NextGEN - i don't need to free my Objects ?!
FMX - Android: also NextGEN ?
FMX - Windows: here i need it or can use the Windows - Client (I don't like to use the Windows - Client cause i have to program 2 Versions for Server Access) Here i would like to use TAutoFree
FMX - MacOS: NextGEN ?
I like to code every Version in the same way. Actually i Create try ... finally free
So if i put everything i TAutoFree i can modify the Platform specific code there ![]()
Very nice
It works !
I testet a little bit and found that
ServiceContext.Factory.RestServer
could give me access to a TRestSQL which seems to contain my tables.
Hi AB it would be great to have AutoFree also for the Crossplatform Client ![]()
Hi AB,
now i think i have read the complete Manual and Found 2 basic Examples for Interfaced based Services
ICalculator and IRemoteSQL
Both are nice examples for the Interfacs itself but what I'm missing is an example how the Interface class (here TServiceRemoteSQL) can access the aServer where it is registerd to.
aServer := TSQLRestServerFullMemory.Create(aModel,'users.json',false,true);
try
// register our IRemoteSQL service on the server side
aServer.ServiceRegister(TServiceRemoteSQL,[TypeInfo(IRemoteSQL)],sicShared)I want to create a little Interface function which selects and creates and deletes some records in the Model / Database of aServer.
How can i get easy access to aServer in TServiceRemoteSQL.
TY now its working
Hi Arnaud,
i downloaded the last Version and testet both my testprogramm (i sent you) and SynDBExplorer with my SynDBRemote WebService
@testprogramm:
Now only 1 Column and 2 rows are shown. Column 1 is empty.
@SynDBExplorer:
now the 2 rows are shown but the one Field is as before filled with the same trash as before.
I'm using XE7
Hi AB this is the same issue i have already reported !
sry ab don't know how to send a file to you. I made a zip if you need it tell me how pls.
i tried but did not fix the problem
I made a little test program from sample 17. I replaced test.db3 with my db3 - File and added my query.
I'll send the file via EMail.
Hi AB i think the Problem is somewhere in function TSQLDBRemoteConnectionPropertiesAbstract.Process on the Client.
The received compressed String is like that:
#$D#1#$B#2'ID'#2#0#8'UniqueID'#6#0#$C'Creatio'#0#0#1' nDate'#2#0#$C'LastEdit$`'#$B'Anzeigenamea'#$C'Be'#0#0#$10#8'schreibung'#6#0#9'KontaktÒB'#9'Logon„{'#$E'Has'#0#0#0'@hedPassword'#6#0#8'Verified'#2#0#6'RechtQ&'#0#0#0#0#0#1'&{6F454FFA-0C97-4780-BA69-6E982'#0'@'#0#0'02B2B3E}Ï'#$8D'ˆªï'#7'tT'#$D'Administrator1Au'#$18#0#0#0'toma/Q_ angelegt beim Erstellen de'#4#1#0#0'r "`nbank'#$11'„AEFDCD2-4A5F-469B-A1BB-'#0'@'#0#0'E4B3949DFFB2}'#5's)@0b7fc485eb399bdd'#0#0#0#0'e9e1c09cddceb2c396290dc23278831b'#0#0#0#0'e4e242981d119ed3'#1#$D#0#3'&{CC516404-5'#0#0'€03BC-4D4D-BC64-0B7E8A3DD!]}鸋Aý$'#5#$12'S'#0#4#0#0'tefan Dies!;mann'#0'&{8E746F41-F824-'#0#0#0#3'4236-8D73-83A5CB8356BC}'#6'A"'#1'x@2ad1b@'#0'€'#0'074845'#1#$14'2d8e73cbfe086991a'#$14'16d03f5b'#0#0#0#0'bd9da2d09849d6fa925aedf'#0#0#2#0#0#0after uncompress the buffer is same as on server before compress:
1#$B#2'ID'#2#0#8'UniqueID'#6#0#$C'CreationDate'#2#0#$C'LastEditDate'#2#0#$B'Anzeigename'#6#0#$C'Beschreibung'#6#0#9'KontaktID'#6#0#9'Logonname'#6#0#$E'HashedPassword'#6#0#8'Verified'#2#0#6'Rechte'#2#0#0#1'&{6F454FFA-0C97-4780-BA69-6E98202B2B3E}Ï'#$8D'ˆªï'#7'Ï'#$8D'ˆªï'#7#$D'Administrator1Automatisch angelegt beim Erstellen der Datenbank&{6AEFDCD2-4A5F-469B-A1BB-E4B3949DFFB2}'#5'Admin@0b7fc485eb399bdde9e1c09cddceb2c396290dc23278831be4e242981d119ed3'#1#$D#0#3'&{CC516404-53BC-4D4D-BC64-0B7E8A3DDA69}鸋ªï'#7'鸋ªï'#7#$12'Stefan Diestelmann'#0'&{8E746F41-F824-4236-8D73-83A5CB8356BC}'#6'stefan@2ad1b0748453272d8e73cbfe0869910b716d03f5bbd9da2d09849d6fa925aedf'#0#0#2#0#0#0OutputRawUtf8 after SetString SynDB Line 7093 is wrong !
1#$B#2'ID'#2#0#8'UniqueID'#6#0#$C'CreationDate'#2#0#$C'LastEditDate'#2#0#$B'Anzeigename'#6#0#$C'Beschreibung'#6#0#9'KontaktID'#6#0#9'Logonname'#6#0#$E'HashedPassword'#6#0#8'Verified'#2#0#6'Rechte'#2#0#0#1'&{6F454FFA-0C97-4780-BA69-6E98202B2B3E}ύ'#$88#$AA#$EF#7'ύ'#$88#$AA#$EF#7#$D'Administrator1Automatisch angelegt beim Erstellen der Datenbank&{6AEFDCD2-4A5F-469B-A1BB-E4B3949DFFB2}'#5'Admin@0b7fc485eb399bdde9e1c09cddceb2c396290dc23278831be4e242981d119ed3'#1#$D#0#3'&{CC516404-53BC-4D4D-BC64-0B7E8A3DDA69}鸋'#$AA#$EF#7'鸋'#$AA#$EF#7#$12'Stefan Diestelmann'#0'&{8E746F41-F824-4236-8D73-83A5CB8356BC}'#6'stefan@2ad1b0748453272d8e73cbfe0869910b716d03f5bbd9da2d09849d6fa925aedf'#0#0#2#0#0#0may be a codesite Problem with SetString ?!