#451 Re: mORMot 1 » mormotMVC Automatic View Template Creation raises Exception » 2015-01-13 09:55:45

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.

#452 mORMot 1 » mormotMVC Automatic View Template Creation raises Exception » 2015-01-12 14:44:08

itSDS
Replies: 3

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

#454 Re: mORMot 1 » [SESSION] how to retrive a link to object » 2015-01-07 09:41:30

we actually use Clientdriven to cache some Data needed as long as the client is connected and it works perfect.

#455 Re: mORMot 1 » mORMot bigData future and actual state » 2015-01-07 09:39:23

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 ?)

#456 mORMot 1 » Feature Request: SynMustache for Crossplatform » 2015-01-07 09:31:30

itSDS
Replies: 2

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 ?

#457 Re: mORMot 1 » The future of mORMot is BigData » 2015-01-03 15:01:06

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.

#458 Re: mORMot 1 » mORMot working as a DataSnap Replacement » 2015-01-03 14:59:34

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.

#459 Re: mORMot 1 » mORMot working as a DataSnap Replacement » 2015-01-02 13:39:49

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.

#460 Re: mORMot 1 » Need DateTimeToIso8601 and Iso8601ToDateTime in Crossplatform ios, a.. » 2015-01-02 13:25:47

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.

#461 mORMot 1 » Need DateTimeToIso8601 and Iso8601ToDateTime in Crossplatform ios, a.. » 2015-01-01 18:48:06

itSDS
Replies: 2

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}

#462 Re: mORMot 1 » Compiler-Warning W1029 with Crossplatform » 2015-01-01 18:43:32

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.

#463 mORMot 1 » Compiler-Warning W1029 with Crossplatform » 2015-01-01 11:45:43

itSDS
Replies: 3

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öglich

Do you have an idea to solve it ?

#464 Re: mORMot 1 » OFF-TOPIC: Merry christmas... » 2014-12-24 02:29:14

Frohe Weihnachten und einen guten Rutsch aus Bochum

#465 Re: mORMot 1 » 64Bit Thoughts » 2014-12-23 13:03:41

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.

#466 mORMot 1 » 64Bit Thoughts » 2014-12-23 11:38:54

itSDS
Replies: 2

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 ?

#467 Re: mORMot 1 » Problem with nested Records for Interfaces. » 2014-12-20 11:21:37

Hi AB - great Work - with the new Wrapper my TResult as wished above

itSDS wrote:

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  cool

#469 Re: mORMot 1 » Wrapper Exception: TSQLAuthGroup should be part of the Model » 2014-12-20 10:13:40

tyvm AB it seem's to work.
I'll try the generated wrapper and report.

#470 Re: mORMot 1 » Compiler error in SynZIP on 64Bit XE7 » 2014-12-20 10:08:32

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}

#471 mORMot 1 » Wrapper Exception: TSQLAuthGroup should be part of the Model » 2014-12-19 15:50:53

itSDS
Replies: 2

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.

#472 mORMot 1 » Compiler error in SynZIP on 64Bit XE7 » 2014-12-19 15:36:24

itSDS
Replies: 3

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 !

#473 Re: mORMot 1 » Local DB in Mobile Apps » 2014-12-19 15:34:11

also interested in local storage smile

#474 Re: mORMot 1 » Problem with nested Records for Interfaces. » 2014-12-08 21:46:51

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.

#475 mORMot 1 » Problem with nested Records for Interfaces. » 2014-12-08 20:28:21

itSDS
Replies: 2

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;

#476 Re: mORMot 1 » Problem with record as Result at Interface function » 2014-12-06 10:30:52

Hi AB i found out that the type RawJSON does not work in the record. I replaced it with RawUtf8 and no error occures.

#477 Re: mORMot 1 » Problem with record as Result at Interface function » 2014-12-06 01:11:33

I use XE7, very serious is the Result - Handling in the Debugger on the server - code.
Normal RawJSON - Results without record work as expected

#478 mORMot 1 » Problem with record as Result at Interface function » 2014-12-05 14:17:39

itSDS
Replies: 3

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 ?

#479 Re: mORMot 1 » Missing RowCount in TJSONTable / TJSONTableObject » 2014-12-05 12:31:06

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 smile

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.

#480 Re: mORMot 1 » delphi question Dynamic Params for Execute » 2014-12-05 12:18:28

TYVM

Sometimes i have a board in front of the head.

#481 mORMot 1 » Missing RowCount in TJSONTable / TJSONTableObject » 2014-12-04 16:30:39

itSDS
Replies: 3

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

#482 Re: mORMot 1 » delphi question Dynamic Params for Execute » 2014-12-04 14:21:01

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 ?

#483 mORMot 1 » delphi question Dynamic Params for Execute » 2014-12-04 13:31:08

itSDS
Replies: 3

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 ?

#484 mORMot 1 » Little Compilererror XE7 and mormot.pas » 2014-11-29 09:20:27

itSDS
Replies: 1

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) method

this procedure cannot be inline cause it has array of const as param.

My Work around: I documented Inline out smile

#485 mORMot 1 » Indexname generation causes every time Index generation » 2014-11-29 09:09:50

itSDS
Replies: 1

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.

#486 Re: mORMot 1 » net stop service takes 60s » 2014-11-27 08:59:55

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.

#487 Re: mORMot 1 » net stop service takes 60s » 2014-11-27 08:42:27

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 ?

#488 Re: mORMot 1 » net stop service takes 60s » 2014-11-27 08:40:20

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 ?!

#489 mORMot 1 » net stop service takes 60s » 2014-11-26 16:05:47

itSDS
Replies: 5

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 ?

#490 Re: mORMot 1 » Request TAutoFree for Crossplatform » 2014-11-25 13:46:41

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 smile

#492 Re: mORMot 1 » Interfaced Base Service Question » 2014-11-22 17:18:57

I testet a little bit and found that

ServiceContext.Factory.RestServer

could give me access to a TRestSQL which seems to contain my tables.

#493 mORMot 1 » Request TAutoFree for Crossplatform » 2014-11-22 16:38:53

itSDS
Replies: 3

Hi AB it would be great to have AutoFree also for the Crossplatform Client smile

#494 mORMot 1 » Interfaced Base Service Question » 2014-11-22 16:37:10

itSDS
Replies: 1

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.

#496 Re: mORMot 1 » Difference in the Resulting DataSet of ToClientDataSet and ToDataSet » 2014-11-21 15:57:36

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

#497 Re: mORMot 1 » ToDataset produce corrupted data » 2014-11-20 12:25:03

Hi AB this is the same issue i have already reported !

#498 Re: mORMot 1 » Difference in the Resulting DataSet of ToClientDataSet and ToDataSet » 2014-11-20 12:07:21

sry ab don't know how to send a file to you. I made a zip if you need it tell me how pls.

#499 Re: mORMot 1 » Difference in the Resulting DataSet of ToClientDataSet and ToDataSet » 2014-11-20 11:16:15

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.

#500 Re: mORMot 1 » Difference in the Resulting DataSet of ToClientDataSet and ToDataSet » 2014-11-19 14:41:46

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#0

after 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#0

OutputRawUtf8 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#0

may be a codesite Problem with SetString ?!

Board footer

Powered by FluxBB