mORMot and Open Source friends
All files named "SQLite3/SQLite3Commons.pas"
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History for SQLite3/SQLite3Commons.pas

2012-11-28
13:34
Renamed to SQLite3/mORMot.pas. all former SQLite3\SQLite3*.pas units have been renamed to SQLite3\mORMot*.pas to match the database-agnostic scheme of the mORMot framework - this is a major break change, so all your "uses" clauses in your code is to be change to follow the new naming check-in: [1c6fe7a1fd] user: abouchez branch: trunk, size: 0
2012-11-26
09:23
fixed issue in TSQLRestServerStaticExternal.EngineDeleteWhere() when calling commands like MyDB.Delete(TSQLMyClass, 'PLU < ?', [20000]) file: [754dea97aa] check-in: [73c7d1ce94] user: abouchez branch: trunk, size: 1250442
2012-11-23
10:09
override User.PasswordHashHexa with Windows Authentication context ID to ensure work even if not connected to a domain file: [3afd0012fe] check-in: [9c6cd2ded8] user: abouchez branch: trunk, size: 1250444
2012-11-22
15:58
  • fixed issue in case of GetTickCount() value change
  • official version updated to 1.18
file: [ccd1477d50] check-in: [525606485c] user: abouchez branch: trunk, size: 1250142
2012-11-21
15:38
  • added regression tests for variants parameters in interface-based services
  • some fixes about variants parameters in interface-based services
file: [3a28ff6aae] check-in: [099f354fd8] user: abouchez branch: trunk, size: 1250142
08:16
refresh session context timer in case of GetTickCount() 49 days overflow file: [b1fe771acc] check-in: [8f1b38a05f] user: abouchez branch: trunk, size: 1250157
2012-11-20
12:41
Let SessionUser.LogonName be filled by value as retrieved from server side, when Windows Authentication is used file: [befecb5b14] check-in: [78837c4156] user: abouchez branch: trunk, size: 1250086
10:43
fix TSQLRestClientURI.Commit/RollBack to work as expected by TSQLRestClientURI.TransactionBegin() file: [68054da786] check-in: [faffe2f286] user: abouchez branch: trunk, size: 1249902
10:38
allow only to delete its own session - security fix for ticket [7723fa7ebd] file: [9dbcc1db9e] check-in: [9f5e95b350] user: abouchez branch: trunk, size: 1249759
10:25
added Windows Authentication as a potential way of Client-Server authentication to mORMot file: [43422829b3] check-in: [d92d2f2de1] user: abouchez branch: trunk, size: 1249871
2012-11-15
13:24
fixed Unicode compilation issues file: [5c4a1767d8] check-in: [950480023e] user: abouchez branch: trunk, size: 1243055
08:54
fixed ticket [c7e163cfe7] file: [ad68e608a1] check-in: [577318fa52] user: abouchez branch: trunk, size: 1243024
2012-11-14
16:37
added JSON serialization of Variant and WideString types in JSONToObject() / ObjectToJSON() functions and WriteObject method file: [5047890a21] check-in: [6232341ec3] user: abouchez branch: trunk, size: 1243016
16:20
  • added process of Variant and WideString types in TSQLRecord properties (as sftVariant and sftRaWUYTF8)
  • TSQLPropInfo*.SetValue() now expect an additional wasString: boolean parameter
  • TSQLPropInfo*.SameValue() is replaced by more versatile TSQLPropInfo*.CompareValue()
file: [64df83e011] check-in: [2543c7d420] user: abouchez branch: trunk, size: 1242436
2012-11-06
10:11
fixed issue in TServiceFactoryServer.CreateInstance() method file: [c39a827d80] check-in: [646d312153] user: ab branch: trunk, size: 1233388
2012-11-05
21:31
introducing smvVariant kind of parameter for interface-based services file: [c7ce7181a9] check-in: [fd12ca0082] user: ab branch: trunk, size: 1233362
19:42
added TInterfacedObjectWithCustomCreate kind of class, making easy to use virtual constructors for TSQLRestServer.ServiceRegister() file: [3328e5c538] check-in: [3383e49e4e] user: ab branch: trunk, size: 1231577
2012-11-01
10:58
fix runtime error when multiple dynamic arrays properties are defined in a TSQLRecord file: [6ab605c567] check-in: [d1246203be] user: ab branch: trunk, size: 1230296
2012-10-28
09:06
new two BinaryToText/TextToBinary protected methods allowing custom storage of binary content as text file: [f6b0c54c9f] check-in: [6226ec0b74] user: ab branch: trunk, size: 1230297
2012-10-26
16:50
fixed some compilation issues file: [9ca7b7ecc4] check-in: [72fbc6eea3] user: ab branch: trunk, size: 1228988
15:23
introducing sftBlobCustom and sftUTF8Custom kind of field (not yet implemented) file: [6ef1b484df] check-in: [2c6f4bf633] user: abouchez branch: trunk, size: 1229126
10:03
deep code refactoring, introducing TSQLPropInfo* classes in order to decouple the ORM definitions from the RTTI - will allow definition of any class members, even if there is no RTTI generated or via custom properties attributes or a fluent interface file: [a87f8721b9] check-in: [79546deff4] user: abouchez branch: trunk, size: 1223578
2012-10-22
06:43
moved SQLFromSelectWhere() from a global function to a TSQLModel method (to prepare "Table per class hierarchy" mapping in mORMot) file: [dea85203df] check-in: [64f7517bb9] user: abouchez branch: trunk, size: 1156646
2012-10-19
18:35
introducing TSQLPropInfo* classes for a more generic RTTI handling - starting of a huge code refactoring in SQLite3Commons.pas file: [73c86e9e12] check-in: [f1364f9b7d] user: abouchez branch: trunk, size: 1156511
2012-10-18
14:20
TSQLRestClientURINamedPipe and TSQLRestClientURIMessage are now thread-safe (i.e. protected by a system mutex) therefore can be called from a multi-threaded process, e.g. TSQLRestServer instances as proxies file: [0e0b7ebe65] check-in: [c0b2c719de] user: abouchez branch: trunk, size: 1152598
2012-10-17
11:31
  • included some unit tests like TTestLowLevelTypes and TTestBasicClasses, previously included in SQLite3Commons.pas or TTestLowLevelCommon, extracted from SynCommons.pas, or TTestSQLite3Engine from SQLite3.pas
  • expose all internal Hash*() functions (following TDynArrayHashOne prototype) in interface section of the SynCommons.pas unit
  • added TypeInfo, ElemSize, ElemType read-only properties to TDynArray
  • added TSynLogFile.Freq read-only property
  • added TDynArrayHashed.HashElement property
file: [2c4dc9ea64] check-in: [eaf5da8348] user: abouchez branch: trunk, size: 1151748
2012-10-16
12:19
fixed unexpected issue in TSQLRestClientURI.BatchSend() when nothing is to be sent file: [a102b37a42] check-in: [41a6ada266] user: abouchez branch: trunk, size: 1178227
2012-10-15
12:06
changed TOnInterfaceStubExecute function prototype to have only one "var Params: TOnInterfaceStubExecuteParams" argument (easier to write inlined delegates) file: [ff93100103] check-in: [8954db6df9] user: abouchez branch: trunk, size: 1178007
2012-10-14
23:12
polished and completed stub / mock features - including end-user documentation file: [074d816750] check-in: [d019c0567b] user: ab branch: trunk, size: 1177248
08:44
  • TInterfaceStub.Expects*() rules will now raise an Exception on failure
  • NotifyDestroy() callbacks will now raise abort exceptions like EAccessViolation or EInterfaceStub in destructor TInterfacedObjectFake.Destroy
  • TInterfaceStub logs text format will avoid adding '=[]' for procedure kind of methods
file: [a34106d00b] check-in: [1f7ac20b82] user: ab branch: trunk, size: 1169855
2012-10-13
11:04
added logging / tracing feature to TInterfaceStub and associated ExpectsTrace() methods - now our mocking / stubbing feature sounds almost complete, and the only Delphi mocking solution I know able to handle such low-level trace checking file: [e5d2a1ba5f] check-in: [1e4387b37d] user: ab branch: trunk, size: 1169256
2012-10-12
22:41
TInterfaceStub.ExpectsCount() parameters order enhancement file: [06e6f413c3] check-in: [da887de603] user: ab branch: trunk, size: 1159711
22:35
  • added TInterfaceStub.ExpectsCount() methods - to be used mainly for mocking interfaces
  • several fixes and enhancements of implementation and tests
file: [2b5a1fae13] check-in: [3db2c54da3] user: ab branch: trunk, size: 1159741
22:16
added RecordSaveJSON() function which follows TTextWriter.AddRecordJSON() format file: [6c9a773e1d] check-in: [67660b261f] user: ab branch: trunk, size: 1154753
16:29
fixes for inlined Check() function error and Unicode warnings file: [b296d4bf7c] check-in: [310b6e70ad] user: ab branch: trunk, size: 1154728
14:16
fixed issue in TSQLRestServer.Create() about authentication enabling file: [4589b90a69] check-in: [073074697e] user: abouchez branch: trunk, size: 1154720
13:43
* introducing TInterfaceStub and TInterfaceMock classes to define high-performance interface stubbing and mocking via a fluent interface * added dedicated EInterfaceFactoryException * added TServiceMethod.DefaultResult property, to be used for stubs/mocks * TServiceFactory.Create() and its children will now alwyas have an optional aContractExpected parameter (for consistency with TServiceFactoryClient)
file: [c5735de6ba] check-in: [7e021f8fa8] user: abouchez branch: trunk, size: 1154735
2012-10-09
10:04
huge interface mocking code refactoring:
  • TInterfaceFactory instances are now shared among all interface-based features (e.g. services, callbacks or mocks/stubs), in a thread-safe cache
  • new TInterfaceFactory.CreateFakeInstance() method for easy mocking of any interface, via some event callbacks
file: [dde9fb8898] check-in: [2982c55794] user: abouchez branch: trunk, size: 1123583
2012-10-08
12:04
introduced abstract TServiceFactoryFake class, parent of all interface fake class implementation (for client-sider services or mocks/stubs) file: [1365f4d9b9] check-in: [082f778515] user: abouchez branch: trunk, size: 1119081
2012-10-06
15:02
SetWeakZero() function will now use a much faster per-class lock design file: [dc51ec048b] check-in: [072dd1bbb5] user: ab branch: trunk, size: 1116375
2012-10-03
15:27
  • speedup of QuotedStr() function
  • several speedup in GetJSONField() and JSON parsing: it will now expect true, false or null to be in lowercase only (as in json.org specifications)
file: [2383f7fa39] check-in: [89d356e6bf] user: abouchez branch: trunk, size: 1115631
11:48
introduced more readable "stored AS_UNIQUE" published property definition in TSQLRecord (via the explicit AS_UNIQUE=false constant) - see http://blog.synopse.info/post/2012/10/03/Today-s-sugar%3A-%22stored-AS_UNIQUE%22-syntax file: [6829977566] check-in: [695567cbd1] user: abouchez branch: trunk, size: 1115626
2012-10-02
08:46
added TSQLTable.GetAsInt64() method - proposal [3bea5d89c6] file: [d5b20586a5] check-in: [93d2c038cc] user: abouchez branch: trunk, size: 1114968
08:39
fixed potential errors JSON generation issue in TSQLRestServer.URI - ticket [b0e9116aeb] file: [fb761271a2] check-in: [97a8bc4cb2] user: abouchez branch: trunk, size: 1114628
2012-09-27
09:36
added RemoveCommentsFromJSON() procedure and associated regression test - from MPV proposal file: [1702850e2a] check-in: [87c570c277] user: abouchez branch: trunk, size: 1114351
2012-09-26
14:36
allow TSQLRestServer.ExportServerMessage to be started in conjunction with other protocols (like named pipes) file: [8d260d46a6] check-in: [bd8fab792e] user: abouchez branch: trunk, size: 1114090
09:54
fix potential GDI handle resource leak in TSQLRestClientURIMessage.Create file: [1b2a61f8d9] check-in: [7b99e0bee1] user: abouchez branch: trunk, size: 1113992
2012-09-24
12:23
  • added TSQLModel.URIMatch() method to allow sub-domains generic matching at database model level (so that you can set root='/root/sub1' URIs)
  • TSQLite3HttpServer now handles sub-domains generic matching (via TSQLModel.URIMatch call) at database model level (e.g. you can set root='/root/sub1' URIs)
file: [e1dc2947c1] check-in: [f454889da1] user: abouchez branch: trunk, size: 1113910
2012-09-18
07:04
  • TSynTableStatement.Create SQL statement parser will handle optional LIMIT clause (in new FoundLimit integer property)
  • fixed issue in TSQLRestServerStaticInMemory.GetJSONValues(), and handle optional LIMIT clause in this very same method
  • fix samples run issue, introduced by http://blog.synopse.info/post/2012/08/31/Breaking-change-of-%2AFillPrepare%28%29-method-parameters
file: [0e39598d6d] check-in: [f132747f92] user: abouchez branch: trunk, size: 1112982
2012-09-14
07:15
fixed PasswordHashHexa field width file: [798cb9ad6b] check-in: [acb9d3ffef] user: abouchez branch: trunk, size: 1113106
06:27
small typo fix file: [8f3a80b567] check-in: [537100e64f] user: abouchez branch: trunk, size: 1113106
05:28
  • huge code refactoring of the ORM model implementation: a new dedicated TSQLModelRecordProperties will contain per-TSQLModel parameters, whereas shared information retrieved by RTTI remain in TSQLRecordProperties - this will allow use of the same TSQLRecord in several TSQLModel at once, with dedicated SQL auto-generation, external DB settings and filter/validation
  • added aExternalTableName/Database parameters to TSQLModel.VirtualTableRegister()
file: [5f52f1de98] check-in: [cc9865c5b4] user: abouchez branch: trunk, size: 1113101
2012-09-11
09:30
changed GetBitCSV/SetBitCSV CSV format to use 'first-last,' pattern to regroup set bits (reduce storage size e.g. for TSQLAccessRights) - format is still read-compatible with old layout, but will more optimized for size and human-readable file: [cd5437d464] check-in: [ca97a46a41] user: abouchez branch: trunk, size: 1105483
2012-09-10
14:40
new protected TSQLRestServer.InternalAdaptSQL method, extracted from URI() process to also be called by TSQLRestServer.InternalListJSON() for proper TSQLRestServerStatic.AdaptSQLForEngineList(SQL) call file: [19561a2ab6] check-in: [c1285b2bee] user: abouchez branch: trunk, size: 1105371
12:22
TSQLAuthUser and TSQLAuthGroup have now "index ..." attributes to their RawUTF8 properties, to allow direct handling in external databases file: [a6b3bbac6f] check-in: [cbea85fb7b] user: abouchez branch: trunk, size: 1105002
09:53
fix Delphi 6 compilation issue file: [c3dfc20c7d] check-in: [81187b7058] user: abouchez branch: trunk, size: 1104739
2012-09-07
16:25
added TSQLRest.Delete() overloaded method with a WHERE clause parameter - including direct SQL execution and ORM dedicated notifications / coherency checking file: [0fd2e8f90a] check-in: [1cb51e996f] user: ab branch: trunk, size: 1104512
06:08
fix for Delphi 2009 file: [9dab3505d2] check-in: [42f544fc40] user: ab branch: trunk, size: 1097634
2012-09-06
19:23
refactoring of TServiceMethod.InternalExecute to change the Instances parameter to be specified as an open array for fast execution over multiple instances of implementation classes (to be used to implement one-way callback events) file: [a60f6a1347] check-in: [f864f1825d] user: ab branch: trunk, size: 1097569
2012-09-05
10:02
fixed implementation and added multi-thread testing of ExecuteInMainThread() method file: [aad3489220] check-in: [e98e24e118] user: ab branch: trunk, size: 1097086
2012-09-04
16:00
documentation update file: [32c8f68f27] check-in: [5048547937] user: ab branch: trunk, size: 1096784
15:50
added "Enable" optional parameter to TServiceFactoryServer.ExecuteInMainThread() method file: [15cb578712] check-in: [6600ed0b85] user: ab branch: trunk, size: 1096443
15:43
  • added virtual TSQLRestServer.BeginCurrentThread method
  • added new TServiceMethod.ExecutionOptions member, and the new TServiceMethodExecutionOption[s] types - used by ExecuteInMainThread()
  • added TServiceFactoryServer.ExecuteInMainThread() method, to force a method to be executed with RunningThread.Synchronize() call on multi-thread server instances (e.g. TSQLite3HttpServer or TSQLRestServerNamedPipeResponse)
  • refactoring of TServiceMethod.InternalExecute low-level asm implementation
  • added THttpServerGeneric.OnHttpThreadStart property, and associated TNotifyThreadEvent event prototype
file: [dccffa3e5b] check-in: [f5d42ace61] user: ab branch: trunk, size: 1096123
12:09
refactoring of TServiceMethod.InternalExecute low-level asm implementation file: [e3bbdb4a67] check-in: [c09a974fc9] user: ab branch: trunk, size: 1092453
2012-09-03
13:12
added per-thread cleaning (i.e. TSQLResetServer.EndCurrentThread call) also for TSQLRestServerNamedPipeResponse connection protocol file: [b0489e4a3f] check-in: [5d905a0105] user: ab branch: trunk, size: 1092378
12:33
  • added virtual TSQLRestServer.EndCurrentThread method and TSQLRestServerStaticExternal.EndCurrentThread overriden method which will be called e.g. by TSQLite3HttpServer for each terminating threads, to release any thread-specific resources (for instance, external connections external connection resource as defined by TSQLDBConnectionPropertiesThreadSafe)
  • TSQLite3HttpServer will now call virtual TSQLRestServer.EndCurrentThread method in each of its terminating threads, to release any thread-specific resources (for instance, external connections in SQlite3DB)
file: [4f711c33f8] check-in: [ba6ff51ae9] user: ab branch: trunk, size: 1091956
2012-08-31
14:48
TSQLRecord.Create/FillPrepare/CreateAndFillPrepare and TSQLRest.OneFieldValue/MultiFieldValues methods signature BREAKING CHANGE: array of const used to be ParamsSQLWhere and expecting '%' in the FormatSQLWhere statement, is now called BoundsSQLWhere, and expects bound parameters specified as '?' in the FormatSQLWhere statement - this is less confusing for new users, and more close to the usual way of preparing database queries; but your existing user code SHALL BE CHECKED and fixed file: [34808810e4] check-in: [82b9e305dd] user: ab branch: trunk, size: 1090825
2012-08-29
15:50
fixed several LVCL and Delphi 5 compilation issues file: [f00b046edf] check-in: [9422fb8309] user: ab branch: trunk, size: 1089245
2012-08-27
16:51
  • new DateToSQL() and DateTimeToSQL() functions, returning a string with a JSON_SQLDATE_MAGIC prefix and proper UTF-8 / ISO-8601 encoding to be inlined as ? bound parameter in any SQL query (allow binding of date/time parameters as request by some external database engine which does not accept ISO-8601 text in this case)
  • ExtractInlineParameters() and SQLParamContent() decode ':("\uFFF12012-05-04"):' inlined parameters (i.e. text starting with JSON_SQLDATE_MAGIC after UTF-8 encoding) as sftDateTime kind of parameter
  • inlined parameters in any SQL query will bind explicitely TDateTime values if the parameter is transmitted as DateToSQL() or DateTimeToSQL() TEXT
  • documentation update about parameter binding (and date/time handling)
file: [aa02dc3c9b] check-in: [eaa12aef16] user: ab branch: trunk, size: 1089075
2012-08-22
12:41
  • added TSQLRecordProperties.HasTypeFields containing set of field types appearing in the record - replaces HasModTimeFields and HasCreateTimeField
  • enhanced TJSONObjectDecoder to handle directly prepared SQL statements for external databases (used by SQLite3DB unit)
file: [7d7e54ac51] check-in: [641f192d5c] user: ab branch: trunk, size: 1085418
2012-08-21
16:24
force deletion coherency in procedure TSQLRestServerStaticExternal.InternalBatchStop file: [a3f37b49e3] check-in: [adffc15dae] user: ab branch: trunk, size: 1083716
14:39
convert most definition of deprecated "object" into "record", when possible, for latest versions of Delphi file: [997d8bdb51] check-in: [2ffa10011a] user: ab branch: trunk, size: 1083673
2012-08-20
07:48
added aUseBatchMode optional parameter to TSQLRecordMany.ManyDelete() method file: [d742e774f1] check-in: [c0c4838f26] user: ab branch: trunk, size: 1082942
2012-08-17
14:28
  • fixed ticket [8dc4d49ea9] in TSQLDataBase.GetFieldNames()about result array truncated to 64
  • fixed non created index issue in TSQLRestServer.CreateSQLMultiIndex()
file: [7bad14fd64] check-in: [8ee15b5130] user: ab branch: trunk, size: 1082162
2012-08-14
11:20
fixed ticket [4f5df7f18f] - about potential overflow of TSQLRestServerStats values (changed to QWord kind of property) file: [2cda875cdf] check-in: [50f9b92f9d] user: ab branch: trunk, size: 1082140
2012-08-04
10:53
changed TSQLRecordProperties.BlobFieldsBits property into BlobFields, as an array of PPropInfo (for faster process) file: [a7bf4c05c0] check-in: [21f6dcf031] user: ab branch: trunk, size: 1081537
09:42
handle NULL values for BLOBs as expected file: [81c72dcf9a] check-in: [be2c287f3f] user: ab branch: trunk, size: 1081342
2012-08-03
05:48
fixed issue about BLOB unproperly serialized into JSON (e.g. now uses null) file: [bae1301b94] check-in: [0dfada3aa2] user: ab branch: trunk, size: 1081191
2012-08-02
15:16
changed TSQLRestServerCallBackParams content to be used as a generic parameters wrapper for both method callbacks and interface-based services: now aParams.Context.ID is to be used insted of aParams.ID file: [ec28378026] check-in: [be7a9520cd] user: ab branch: trunk, size: 1080881
10:08
various fixes and speed-ups, especially in the TSQLRestServerStaticInMemory process file: [d10edcf45e] check-in: [ab4478695e] user: ab branch: trunk, size: 1082077
06:07
TSQLRestServerStaticInMemory hash-based search will handle RawUTF8 properties just like the SYSTEMNOCASE collation: it will be 100% compatible with the default SQlite3 engine file: [b4bdfca802] check-in: [0103c8dbd5] user: ab branch: trunk, size: 1081244
2012-08-01
16:34
  • now unique fields are hashed in TSQLRestServerStaticInMemory implementation: "stored: false" properties are now checked for unicity before adding or update, and search will use the hash table for very fast O(1) process - resulting speed is amazing: there is almost no speed penalty in bulk adding, and overall speed beat other DB engines
  • new TPropInfo.GetHash and TPropInfo.SameValue methods, with optional case sentivity handling
  • new TListFieldHash class for efficient O(1) search using hashing handling
  • speed optimization: all TSQLRestServerStaticInMemory search methods will now call a generic FindWhereEqual() for better code speed and maintenance
  • "15 - External DB performance" sample updated to test and benchmark the "stored: false" properties speed
file: [8ccc3d9e56] check-in: [f33187df1c] user: ab branch: trunk, size: 1080190
15:30
fixed issue in TSQLRestClientURI.EngineAdd() when server returned -1 file: [4490476a96] check-in: [0d4153b3a3] user: ab branch: trunk, size: 1068669
15:27
added TSQLRest.Retrieve() overloaded method for easy parameter binding file: [ac641b1144] check-in: [3de256a408] user: ab branch: trunk, size: 1068559
2012-07-27
15:00
added optional "rowCount": in TSQLRestServerStaticInMemory.GetJSONValues, TSQLTable.GetJSONValues and in TSQLTableJSON.ParseAndConvert for about 5% faster process of huge content (mpv proposal) file: [75784f5ef3] check-in: [1ecf509a4b] user: ab branch: trunk, size: 1067709
11:58
new TSQLRestServerStaticInMemory.ExpandedJSON property, and associated fixes to ensure the created JSON content is valid file: [268b645397] check-in: [2edda3889b] user: ab branch: trunk, size: 1066980
2012-07-26
16:08
  • TSQLRestServerStaticInMemory.GetJSONValues will now generate expanded JSON content, if specified (only non-expanded format was implemented)
  • several JSON serialization speed-ups
file: [a48bc1575d] check-in: [d7af911430] user: ab branch: trunk, size: 1066539
09:32
  • changed the non expanded JSON format to use lowercase first column names: {"fieldCount":1,"values":["col1"... instead of {"FieldCount":1,"Values":[..
  • fixed regression issue about FTS virtual tables not working any more
file: [16a1d73ad9] check-in: [f641049835] user: ab branch: trunk, size: 1064592
2012-07-25
11:51
fixed performance issue about pessimistic TSQLRestServerStaticInMemory.fIDSorted value file: [eaabbcac6b] check-in: [ff2321257a] user: ab branch: trunk, size: 1064388
2012-07-24
13:22
TSQLModel.Create() will reset all supplied classes to be defined as non virtual (i.e. Kind=rSQLite3), but will copy the kind of tables (internal/external) in case of clone file: [02c88e5546] check-in: [e0f8e78ad0] user: ab branch: trunk, size: 1063832
11:52
removed TSQLRecordExternal class type, to allow any TSQLRecord (e.g. TSQLRecordMany) to be used with VirtualTableExternalRegister() - there was indeed no implementation requirement to force a specific class type - and associated documentation enhancements (including BATCH array binding) file: [4db7077284] check-in: [3cfd0c22ad] user: ab branch: trunk, size: 1062865
2012-07-23
11:58
added EnsureUniqueTableInFrom parameter for function GetTableIndexFromSQLSelect) file: [e0a2d3e191] check-in: [c5e910961d] user: ab branch: trunk, size: 1061802
07:27
implemented feature request [7f6828999d] - about the possibility to use standard read/write in conjunction with custom read/write in JSONToObject and ObjectToJSON (mpv proposal - thanks!) file: [bec336be68] check-in: [45a798d805] user: G018869 branch: trunk, size: 1061627
2012-07-21
10:30
fix issues with some kind of input data file: [07797dda41] check-in: [5fdb5e0e5e] user: User branch: trunk, size: 1060967
10:12
new GotoNextNotSpace() and GotoEndOfQuotedString() functions file: [5416b4c9e9] check-in: [5c08860c99] user: User branch: trunk, size: 1060801
2012-07-20
16:14
added TSQLRestServerStatic.AdaptSQLForEngineList virtual method to handle most generic SELECT cases (overriden e.g. in SQLite3DB unit) file: [14c7eb523f] check-in: [be6c892fea] user: G018869 branch: trunk, size: 1060908
08:25
now JSONToObject/ObjectToJSON functions and WriteObject method will handle standard TPersistent class serialization into/from JSON object file: [125ba749fa] check-in: [2b5516cd24] user: G018869 branch: trunk, size: 1060240
2012-07-19
13:37
fix GPF issue when working with virtual tables on complex SQL queries file: [f809638bd7] check-in: [59fe5c929f] user: G018869 branch: trunk, size: 1058818
13:25
'SELECT *' statements on virtual/external tables will by-pass the SQLite3 virtual table module: TSQLRecord.FillPrepare can be up to 30% faster file: [af86fb8aa9] check-in: [f067d8d845] user: G018869 branch: trunk, size: 1058792
2012-07-18
15:57
  • new TSQLDBStatement.BindArray() methods, introducing array binding for faster database batch modifications (only implemented in SynDBOracle by now)
  • added TSQLDBConnectionProperties.EngineName property
  • added TSQLDBConnectionProperties.BatchSendingAbilities property to define the CRUD modes available in batch sending (see e.g. Oracle's array bind, or MS SQL bulk insert feature)
  • now TSQLDBOracleConnectionProperties.Create constructor can be used directly
  • previous TSQLDBOracleConnectionProperties reintroduced constructor renamed CreateWithCodePage, to specify the code page to be used
  • internal cache added in TSQLRest.GetServerTimeStamp method for better speed
  • implemented transaction process for (external database) virtual tables
  • fixed issue in TSQLDBOracleStatement.ColumnToVarData when retrieving date time fields from Oracle as external virtual tables
  • new TOracleDate.From/ToIso8601 methods for direct SQLT_DAT handling
file: [10a5915aee] check-in: [d472f2ea3d] user: G018869 branch: trunk, size: 1056718
2012-07-17
06:56
added TJSONObjectDecoder record/object helper for JSON object decoding (used e.g. by GetJSONObjectAsSQL() function, and for SQlite3DB process) file: [c18ac6735f] check-in: [a01eff7eb0] user: G018869 branch: trunk, size: 1052568
2012-07-16
15:01
  • TSynCache.Reset now returns a boolean stating if something was flushed
  • added TSQLRestServerStatic.InternalBatchStart / InternalBatchStop methods to handle fast grouped sending to remote database engine (e.g. Oracle bound arrays or MS SQL bulk insert via SynDB)
  • fix FlushInternalDBCache method not properly called with TSQLRestServerStaticInMemoryExternal update/delete/insert calls
file: [f460db320f] check-in: [446c76a155] user: G018869 branch: trunk, size: 1050305
2012-07-11
06:49
now JSON parser will handle #1..' ' chars as whitespace (not only ' ') - just as expected by the specifications file: [111e0d85db] check-in: [01003b9517] user: G018869 branch: trunk, size: 1047540
06:14
now JSON parser will allow whitespace inserted between any pair of tokens, even after true/false/null, as expected by the specification - fix ticket [db2d4aed31] file: [ff61854787] check-in: [c8f19233cf] user: G018869 branch: trunk, size: 1047284
2012-07-10
15:00
fixed compilation issues since SQLite3Pages upgrade into Unicode ready implementation, introducing TSQLTable.ExpandAsSynUnicode method file: [95b2844284] check-in: [6a34b75c47] user: G018869 branch: trunk, size: 1047191
2012-07-05
07:13
now huge service JSON response is truncated (to default 20 KB) in logs file: [490a81d140] check-in: [2190897ad9] user: G018869 branch: trunk, size: 1046449
2012-07-04
17:35
external direct insert, update or delete actions (i.e. when the TSQLRestServerStaticExternal instance is called directly) will now flush the low-level SQLite3 DB SQL/JSON cache, as expected by the virtual tables (e.g. both TSQLRestServerStaticInMemoryExternal and TSQLRestServerStaticExternal classes) file: [6a2e44286a] check-in: [ce2e1dec5c] user: G018869 branch: trunk, size: 1045966
08:29
Fix random issue in ServerTimeStamp kind of properties: since TTimeLog type is bit-oriented, you can't just use add or substract two TTimeLog values when doing such date/time computation: use a TDateTime temporary conversion in such case. file: [9da0d60cf8] check-in: [75935462ce] user: G018869 branch: trunk, size: 1043972
2012-06-26
14:59
  • fixed ticket [fdf7158601] - about incorrect null value parsing in JSONToObject when isObj = oCustom (fix by mpv - thanks!)
  • fixed ticket [a1d9e9148e] - about incorrect reading empty JSON object by JSONToObject (fix by mpv - thanks!)
file: [d1a8e3b2db] check-in: [b8a49462f3] user: G018869 branch: trunk, size: 1043907
2012-06-23
18:30
  • added BlobToBytes() function and TSQLTable.GetBytes/GetStream methods
  • enhanced TDataSet generation to properly handle Int64 column content
  • enhanced TDataSet generation to properly handle BLOB content under Delphi 2009+
file: [db024277e8] check-in: [2cb73264ad] user: User branch: trunk, size: 1043187
07:33
  • added ReplaceRowIDWithID optional parameter to GetJSONObjectAsSQL(), in order to allow working with external DB not allowing RowID (e.g. Oracle)
  • changed column named 'RowID' into 'ID' since it is reserved e.g. in Oracle
file: [b15189021e] check-in: [ffe496a829] user: User branch: trunk, size: 1041745
05:58
fixed issue with Delphi 2009 file: [c416925e99] check-in: [ce734bb138] user: User branch: trunk, size: 1040987
2012-06-22
16:16
added TSQLTable.FieldLengthMax method file: [5936e19dfd] check-in: [12b395261a] user: G018869 branch: trunk, size: 1040977
2012-06-17
18:27
Interface to object conversion enhanced for any kind of fake clients file: [84fd261304] check-in: [a16fde7b40] user: User branch: trunk, size: 1040385
2012-06-16
07:50
small enhancements for TObjectListHashed file: [64d6780f22] check-in: [262f4c6c43] user: User branch: trunk, size: 1040185
2012-06-15
19:49
fix several compilation issues with class helpers before Delphi XE2, and other "joyeuset�es" file: [f859d4f391] check-in: [fa4f8891ed] user: User branch: trunk, size: 1040108
18:28
added SetWeakZero() function and TObject class helper to handle ZEROed Weak interface assignment (with small performance penalty and memory use), corresponding to the ARC's Zeroing Weak pointers model file: [cf15aaac74] check-in: [39b7de8177] user: G018869 branch: trunk, size: 1040065
18:26
TSQLRestCache.Notify*() methods made public for low-level potential use file: [827ca93f72] check-in: [5325a462e1] user: G018869 branch: trunk, size: 1033531
15:47
fixed issue about harcoded 'ID' column, not compatible with virtual tables file: [20f1aaab30] check-in: [aa10d080dd] user: G018869 branch: trunk, size: 1033375
2012-06-14
17:20
fix some typo error from latest check-in file: [7658f710c0] check-in: [b9ec190c07] user: G018869 branch: trunk, size: 1033473
17:11
  • CopyObject() procedure now handle TCollection kind of object not only as sub properties
  • introducing TInterfacedCollection dedicated class, properly handling collection item creation on the Server side, with interface-based services: all contract operations shall use it instead of TCollection
file: [7aeb6a9e43] check-in: [9a0b706eb9] user: G018869 branch: trunk, size: 1033513
2012-06-13
12:43
  • added ObjectFromInterface() function working also with TInterfacedObjectFake
  • introducing SetWeak() function to handle Weak interface assignment
  • create generic parent TInterfaceFactory class, for a common way of retrieving interface RTTI
file: [336d1ecee4] check-in: [c2dfe98bce] user: G018869 branch: trunk, size: 1031419
2012-05-30
17:00
made URI check case-insensitive (as for official RFC) - fix ticket [d324b4932c] file: [7acbd42f24] check-in: [3d14c64280] user: G018869 branch: trunk, size: 1028520
16:30
fixed issue in TSQLTable.GetJSONValues about JSON number encoding file: [40c3f29a80] check-in: [eb2b772e52] user: G018869 branch: trunk, size: 1028421
2012-05-29
18:41
  • fixed naming of framework in units header
  • fixed incorrect call to FormatUTF8() - see [d74020f7c3]
file: [3b27b14f89] check-in: [c058f55771] user: G018869 branch: trunk, size: 1028319
2012-05-28
14:04
now ObjectToJSON/JSONToObject will unserialize sets and enumerations as an array of string, if HumanReadable is set to TRUE file: [99fcefdbe7] check-in: [21220be121] user: User branch: trunk, size: 1028329
13:40
2nd occurence of this Inc(PW) in TServiceFactory.AddMethodsFromTypeInfo method was already corrected as such, but not the first - fix [345611403f] file: [82a51056c0] check-in: [7d5c731817] user: User branch: trunk, size: 1027185
13:29
fix unexpected error dialog file: [39a9ab04a8] check-in: [5dd3bcaefa] user: User branch: trunk, size: 1027186
2012-05-23
12:38
JSON functions now handle '0' as number according to http://json.org specs file: [dd4c940cd3] check-in: [7f82fd67bd] user: G018869 branch: trunk, size: 1027264
2012-05-18
15:36
refactored/updated ORM documentation about Objects relationship (i.e. cardinality) file: [04e1c8ea82] check-in: [064dd5562c] user: G018869 branch: trunk, size: 1026723
2012-05-17
16:35
fixed issue in client side fake interface creation, when returning a DateTime kind of value file: [6158222792] check-in: [e0ff26f3fc] user: User branch: trunk, size: 1026656
2012-05-16
15:15
now Iso2S() - i.e. overriden i18nDateText global function pointer - will handle a date-only or time-only supplied value as expected file: [5ab7b6ab6d] check-in: [5aa2c35b43] user: G018869 branch: trunk, size: 1026649
2012-05-03
15:19
updated TTextWriter.RegisterCustomJSONSerializer() method to allow JSON serialization of any record content (used by RecordLoadJSON and TTextWriter.AddRecordJSON) - with associated documentation: see http://blog.synopse.info/post/2012/05/03/Custom-JSON-serialization-of-records file: [064fd902b9] check-in: [5b3468e16c] user: G018869 branch: trunk, size: 1026639
2012-04-29
17:35
fix issue in TPropInfo.SetValue + TSQLRecord.ClearProperties with Value=nil file: [c434dcd20e] check-in: [e11083b973] user: User branch: trunk, size: 1026613
2012-04-28
07:54
added RecordManySourceProp / RecordManyDestProp / RecordManySourceClass / RecordManyDestClass to the TSQLRecordProperties file: [15a6c11bc9] check-in: [f7a31b4586] user: User branch: trunk, size: 1026319
2012-04-18
15:09
now TSQLRestClientURI BATCH sequences methods will allow to mix several TSQLRecord in its sequence of BatchAdd/BatchUpdate/BatchDelete calls - if initiated as BatchStart(nil) file: [89933affce] check-in: [6c97b80ed9] user: G018869 branch: trunk, size: 1025593
2012-04-16
08:05
added TSQLRestServer.ServiceMethodByPassAuthentication method in order to allow by-pass of the RESTful authentication scheme for some methods (can be used e.g. to server some HTML content for a non SOA client file: [854109acdb] check-in: [5b4e96bfbf] user: G018869 branch: trunk, size: 1016824
05:59
make sense to have an explicit exception here file: [22c1937080] check-in: [c56be3152c] user: G018869 branch: trunk, size: 1015730
05:38
added an explicit warning in case of wrong client code implementation (instead of an Assert): any used Interface shall be released before the Client file: [1a7706451d] check-in: [8071540884] user: G018869 branch: trunk, size: 1015833
2012-04-15
18:12
Minor compilation issue fixed for Unicode versions of Delphi file: [66d587d232] check-in: [9f6337c6f9] user: User branch: trunk, size: 1015603
2012-04-13
16:32
added TSQLRestClientURI.OnSetUser notification event (called from SetUser) file: [0ad6d011ca] check-in: [fb33bc533f] user: G018869 branch: trunk, size: 1015562
16:21
FPC compatibility enhancement file: [03561b9631] check-in: [ecca0393cf] user: G018869 branch: trunk, size: 1014748
10:00
  • allow rest to any class or dynamic array custom JSON serialization to the default serializer (by setting nil to both Reader and Writer callbacks)
  • enhanced documentation and regression tests, about custom class JSON serialization
file: [1121321bd2] check-in: [bea19ebde8] user: G018869 branch: trunk, size: 1014794
2012-04-12
18:59
get rid of the over-complicated aEndOfObject parameter in TDynArrayJSONCustomReader callbacks file: [f1eed4c4e5] check-in: [d0e2d37be4] user: G018869 branch: trunk, size: 1011983
18:28
updated documentation and regression tests for TDynArray custom JSON serialization file: [67e4705eaa] check-in: [97bf3890a8] user: G018869 branch: trunk, size: 1012145
12:43
updated documentation about the TJSONSerializer.RegisterCustomSerializer() class method file: [5c2d491644] check-in: [1b91852ea4] user: G018869 branch: trunk, size: 1009275
10:05
added TJSONSerializer.RegisterCustomSerializer() method to allow JSON serialization of any class (thanks Pavel "aka mpv" for the idea and patch) file: [28cfc0ff3d] check-in: [84383103f4] user: G018869 branch: trunk, size: 1008874
2012-04-11
11:39
continuing compilation with FPC (Win32 platform by now) file: [52f960c450] check-in: [ef5cd9b40a] user: G018869 branch: trunk, size: 1004820
07:43
new ForceID parameter for TSQLRestClientURI.BatchAdd() to allow adding a record with a given ID file: [6c460f79e0] check-in: [bc45f7bbd3] user: G018869 branch: trunk, size: 1004098
2012-04-10
09:26
new ForceID parameter for TSQLRest.Add() to allow adding a given ID file: [0c437de4e3] check-in: [3f9985da02] user: G018869 branch: trunk, size: 1003847
2012-04-08
08:13
TSQLRestClientURI.CallBackPut() will now return any HTTP response content (even if it is not HTTP/1.1 compliant, and not work over some networks) file: [f5987afc84] check-in: [9dcb4681ce] user: User branch: trunk, size: 1003074
2012-04-06
16:08
made TOnAuthentificationFailed an object method event file: [2368e51f5a] check-in: [1bc71e61bc] user: G018869 branch: trunk, size: 1002907
15:20
authentication session deletions were not properly handled file: [02dc3ee2b9] check-in: [a51ce2fac0] user: G018869 branch: trunk, size: 1002695
11:53
  • fix execution issue in TSQLRestServer.AfterDeleteForceCoherency()
  • fix screen refresh issue on record deletion in SynFile demo
file: [6c2675f75d] check-in: [4c881e5bce] user: G018869 branch: trunk, size: 1002182
11:34
fix issue of unhandled buffer in TSQLTableJSON.UpdateFrom() file: [90980269cb] check-in: [fc65a0c9a2] user: G018869 branch: trunk, size: 1002050
05:27
fix Delphi XE compilation issue file: [8f8d31ffc2] check-in: [13e8f45769] user: G018869 branch: trunk, size: 1001366
2012-04-03
12:01
try to fix potential compiler issues of Delphi 2009 file: [c1ea1b7142] check-in: [c1228fe691] user: G018869 branch: trunk, size: 1001313
2012-03-30
08:15
added logging of authentication file: [f1faec99d6] check-in: [dac514e940] user: G018869 branch: trunk, size: 1001266
2012-03-29
13:30
more than MAX_SQLFIELDS-1 columns (by default, 63) will raise an exception file: [44ecc92a97] check-in: [d80a9a9a46] user: G018869 branch: trunk, size: 1001088
2012-03-28
17:31
most units now compile with Delphi XE2 in 64 Bit mode :) file: [944a5c6bcf] check-in: [160f88b541] user: User branch: trunk, size: 1000957
11:35
some code refactoring file: [8aa21c5f75] check-in: [8b4510718b] user: G018869 branch: trunk, size: 1000716
10:01
  • now interface based services are responding with GET commands in additional to POST verb
  • Custom returned content (i.e. TServiceCustomAnswer) is now handled as expected by the Delphi client (i.e. TServiceFactoryClient class)
file: [b663eaf5b3] check-in: [52105f4ebe] user: G018869 branch: trunk, size: 1000675
2012-03-27
20:14
reUrlEncodedSQL kind of GET execution is now encoded as sql=.... inline parameter file: [b433438a75] check-in: [0a6f5f3a6a] user: User branch: trunk, size: 998522
20:03
added reUrlEncodedSQL remote access right, to allow execution of SQL statement from a GET with the content encoded on the URI (as from XMLHTTPRequest) file: [8686f06b00] check-in: [6053a9ddc9] user: User branch: trunk, size: 998646
09:11
make interface services call multi-thread (was blocked within the "AcquireWrite" global lock) file: [8c6715136c] check-in: [a56cba70ce] user: G018869 branch: trunk, size: 997821
2012-03-21
10:57
added TServiceCustomAnswer record type to be used as result for a function method for custom content in interface-based services (not for TServiceContainerClient remote access, but for AJAX/HTML request) file: [210f36c1ef] check-in: [2466ce9e88] user: G018869 branch: trunk, size: 997302
09:08
  • TSQLRestServer.ServiceRegister(aClient: TSQLRest...) for a remote access
  • added function IsNotAjaxJSON() function - formerly internal IsExpanded()
  • fixed potential issue of misleaded client side remote content
file: [5f3354e80d] check-in: [95d09e80f0] user: G018869 branch: trunk, size: 995634
2012-03-19
13:19
TSQLRequest.Execute(JSON: TStream) now allows field names at least, even with no data (as expected by TSQLRestClientURI.UpdateFromServer) file: [6d2495b357] check-in: [f633312bdc] user: G018869 branch: trunk, size: 992857
2012-03-13
13:47
  • fixed issues in function IsJSONString() which returned TRUE for '-' or '+', or false positives in some border-line cases (due to wrong uppercase guess): now this function is split into IsString() and IsStringJSON() functions to explicitely handle null/false/true constant recognition
  • fixed potential false positives of null/false/true in function GetJSONField
  • fix potential formating issue in TSQLTable.GetJSONValues/GetCSVValues methods which may create some wrong formating if TEXT is null/false/true (were formerly recognized as JSON keywords, whereas it should have already been transformed into nil, '0' or '1')
file: [1e5a627e33] check-in: [7444f84ec1] user: User branch: trunk, size: 992673
2012-03-09
15:57
new TSQLRest.EngineUpdateField protected method for a field content update (with PUT ModelRoot/TableName?setname=..&set=..&wherename=..&where=..) and removal of deprecated TSQLRestServer.UpdateField methods file: [1d19ea782d] check-in: [2ab0c7d298] user: G018869 branch: trunk, size: 991445
2012-03-08
19:06
fix UNICODE compilation issues (Delphi >= 2009) file: [237979cb08] check-in: [1c857d723d] user: User branch: trunk, size: 993342
17:46
changed implementation of TSQLRestServerRemoteDB.UpdateField by adding a dedicated RESTful command for such field update file: [8ee1691ecd] check-in: [ad01f9b28f] user: G018869 branch: trunk, size: 993324
17:14
  • added TSQLRestServerRemoteDB class to implement a REST server using a remote TSQLRestClient connection for all its ORM process: can be used e.g. to publish services with a dedicated process in a DMZ
  • deep refactoring of TSQLRestClient / TSQLRestClientURI methods, for better compliance with the Liskov substitution principle (LSP)
file: [0ba0f257c9] check-in: [a089a32329] user: G018869 branch: trunk, size: 992093
08:30
  • TSQLRestServerFullMemory class now handling persistence on both JSON and binary files - also updated samples and documentation to take notivce of this new class
  • new ReadStringFromStream() and WriteStringToStream() functions in SynCommons.pas
file: [21eeabbd86] check-in: [cee7c99241] user: G018869 branch: trunk, size: 980647
2012-03-07
16:28
added TSQLRestServerFullMemory class to implement a basic REST server using only in-memory tables (will only handle CRUD commands, but is enough to handle authentication with optional persistence in JSON file) - the Project14ServerInMemory.dpr sample will use such a server for instance, and will compile as a 200 KB executable, using LVCL :) file: [6182611731] check-in: [99af04b23f] user: G018869 branch: trunk, size: 979390
12:09
added "14 - Interface based services" sample file: [125cb27f7e] check-in: [eab9f6d937] user: G018869 branch: trunk, size: 969507
10:57
  • new RawUTF8ArrayToQuotedCSV() functions
  • new TSQLRest.MainFieldIDs() method
  • refactoring of all security code in TServiceFactoryServer Allow* / Deny* methods
file: [71aa462394] check-in: [a094034496] user: G018869 branch: trunk, size: 969509
2012-03-05
16:19
added the new default RESTful routing for interfaced-based services (in additional JSON-RPC mode), with associated regression tests file: [9e342ea641] check-in: [ddb7545aca] user: G018869 branch: trunk, size: 962839
2012-03-04
19:12
not working revision - quick check in only file: [8d27a5243a] check-in: [81e6381544] user: User branch: trunk, size: 957769
2012-03-03
10:02
fixed several Delphi 2009+ issues (UNICODE) file: [0b673a87fe] check-in: [b8e3addc96] user: User branch: trunk, size: 956054
2012-03-02
21:00
consolidated log creation when using services file: [37556b45ed] check-in: [f1af63f37d] user: G018869 branch: trunk, size: 956038
15:14
some modifications in LVCL + associated mORMot updates file: [b0db41777d] check-in: [3c6ded3f3d] user: G018869 branch: trunk, size: 955666
11:15
added sicPerSession, sicPerUser and sicPerGroup interface server-side implementation modes will maintain one object instance per running session / user / group (only working if RESTful authentication is enabled) file: [30012afb53] check-in: [143b76a626] user: G018869 branch: trunk, size: 955656
2012-03-01
20:57
added "method":"_signature_" to retrieve the implementation signature, if TServiceContainerServer.PublishSignature is set to TRUE - it is set to FALSE by default, for security reasons file: [3278973c86] check-in: [982c9d5cd3] user: G018869 branch: trunk, size: 952690
20:51
added an optional custom contract to be used instead of standard methods signature on the client side file: [905a8898aa] check-in: [71d9373fe6] user: G018869 branch: trunk, size: 951976
20:20
  • new TRawUTF8ListHashed class, with extend TRawUTF8List by using an internal hash table to optimized IndexOf() method call (including case sensitivity)
  • introducing security features for our interface-based implementation: a per interface, per method, and per authentication user group security policy can be easily implemented (with associated regression tests)
file: [989f70de92] check-in: [11e01ba7e9] user: G018869 branch: trunk, size: 951080
13:54
  • TSQLRestServer published method names are now hash-stored for speed
  • introduced TSQLRestServerSessionContext structure to include current User and Group ID to the execution context (in addition to the Session ID)
file: [97f85409a5] check-in: [9f48db2faa] user: G018869 branch: trunk, size: 943298
2012-02-29
20:56
  • now the TSQLAuthUser instance retrieved during the session opening will retrieve the Data BLOB field (ready to be consummed on the server side)
  • new ServiceContext global threadvar, able to access the server-side remote process which created a service instance
  • several bug fixes and enhancements
file: [696078b0ea] check-in: [6ffde66930] user: G018869 branch: trunk, size: 939690
16:54
  • JSONDecode() overloaded functions now accept parameter names without case sensibility
  • added interface-based remote service implementation tests in order to enhance SOA coverage
  • now JSONToObject/ObjectToJSON functions and WriteObject method will handle standard TPersistent class serialization into/from JSON object (and therefore our SOA interfaces can serialize any TPersistent class, in addition to TSQLRecord instances)
  • interfaces (aka SOA contracts) shall not inherit from IService any more
  • interfaces (aka SOA contracts) can now inherit from other interfaces (all methods will be available remotely)
  • server-side implementation class can now be directly inheriting from TObject (not only TInterfacedObject)
  • method names are now hashed for faster execution on the server side
  • contract layout changed to be less Delphi-dependent (e.g. use "in" or "out" instead of "const" or "var")
  • sicClientDriven is now functional (several implementation bugs fixed), with included regression tests
  • fixed issue about wrong "self" value transmitted to the server implementation class
file: [739a9b72dc] check-in: [d0135ee1d6] user: G018869 branch: trunk, size: 935761
2012-02-28
19:03
  • now interface definition allows records within parameters
  • fixed issues when floating-point values were returned from an interface method
  • much more complete test coverage (and therefore a few bug fixes, including dynamic arrays handling)
  • new TRecordType definition, and TTypeinfo.RecordType associated method
  • new TTextWriter.WrRecord method for direct adding of a Base-64 record content
file: [dd798ad374] check-in: [93027901e7] user: G018869 branch: trunk, size: 934160
13:04
  • service interface methods now accept enumerations and sets (with explicit type)
  • service contract will now include the whole type name for arguments requiring it (e.g. sets, enumerates, objects, dynamic arrays)
  • service contract property of TServiceFactory class renamed "Contract" instead of "Signature"
  • some code refactoring
file: [acfed0c915] check-in: [e6caaa94e7] user: G018869 branch: trunk, size: 930108
10:00
  • added GetEnumNameTrimed() function
  • added the service "contract" feature, to ensure compatibility between client and server
file: [077e4a4d59] check-in: [ea089b0395] user: G018869 branch: trunk, size: 928122
2012-02-26
18:29
mORMot framework now implements Client-Server service implementation using regular Delphi interfaces (and a JSON-RPC like protocol) file: [0cbba48b89] check-in: [8610718386] user: User branch: trunk, size: 923384
00:38
small fixes file: [3b56b218b9] check-in: [7fc613f8b2] user: User branch: trunk, size: 918489
00:26
  • added dedicated Exception classes (ESynException, ETableDataException) in SynCommons
  • added dedicated Exception classes (EORMException, EParsingException, ESecurityException, ECommunicationException, EBusinessLayerException, EServiceException) all inheriting from SynCommons.ESynException
  • renamed ESQLException into ESQLite3Exception
  • fixed potential GPF issue in Hash32() function
  • Client-side implementation of remote Interface access now is able to create "fake" classes in order to emulate native interfaces - the stubbing code (i.e. asm generated on the fly) is IMHO simple and great: it can be proudly compared to Embarcadero's Rio or Rtti unreadable units :)
file: [899cd51db7] check-in: [be458e5fb5] user: User branch: trunk, size: 918502
2012-02-24
13:08
server-side implementation of the interface-based services completed - simple provided regression tests passed with success - beware: some nice code within in order to call an interface from and to JSON encoded remote requests! file: [2c1d11d78a] check-in: [6b39ccefe8] user: G018869 branch: trunk, size: 904257
2012-02-21
18:26
interface-based services implementation continues file: [71517f5790] check-in: [aa06b5eed6] user: G018869 branch: trunk, size: 884063
2012-02-20
16:34
  • added TSQLRestCache.SetCache(aRecord: TSQLRecord) overloaded method;
  • updated documentation (general table of contents + CRUD caching)
file: [7f116fb7a8] check-in: [efa16a1cc7] user: G018869 branch: trunk, size: 883799
10:07
added aHashedPassword parameter to TSQLRestClientURI.SetUser - when it is TRUE, the aPassword parameter is expected to contain the already-hashed value, just as stored in PasswordHashHexa (i.e. SHA256('salt'+Value) as in TSQLAuthUser.SetPasswordPlain method) file: [1bd71b2062] check-in: [fed40c6cd6] user: G018869 branch: trunk, size: 883312
09:42
TFileBufferWriter.Create now accepts up to 4 MB internal buffer size file: [8a34ca7ee8] check-in: [ec9a53a44c] user: G018869 branch: trunk, size: 882844
2012-02-17
18:09
  • optimized CRUD/ORM level Client and Server caching
  • updated corresponding documentation
  • added some dedicated regression tests
file: [ac7d61a9e1] check-in: [fc9d3e757f] user: G018869 branch: trunk, size: 882721
2012-02-16
20:37
added a generic JSON error message mechanism within the framework (including error code as integer and text, with custom error messages in RecordCanBeUpdated method and also in TSQLRestServerCallBackParams) file: [87ef0b03b1] check-in: [cd4268f42b] user: G018869 branch: trunk, size: 878568
2012-02-15
16:58
comments minor refresh file: [6f9278918f] check-in: [915874bfc0] user: G018869 branch: trunk, size: 875569
2012-02-11
12:04
new property ExpectMangledURI to accept only one kind of service naming at the URI level file: [c9b53e0ec6] check-in: [b3c77d96a0] user: User branch: trunk, size: 875496
2012-02-10
09:59
faster pure pascal IdemPropName() functions (comparing 4 chars at once) file: [28db6289ef] check-in: [a96671b1d9] user: G018869 branch: trunk, size: 874708
2012-02-08
16:22
introducing new TSynAnsiConvert and TSynAnsiFixedWidth classes, able to process Unicode to/from Ansi conversion in all possible code pages, with generic access methods and optimized handling of fixed width encodings file: [d358e1a67b] check-in: [fef5fd8640] user: G018869 branch: trunk, size: 874709
2012-02-07
07:46
  • added TSQLRestClientURI.ServerCacheFlush method to handle remote server side cache
  • the TSQLRestServerCallBack method prototype has been modified to supply "var aParams: TSQLRestServerCallBackParams: cardinal" as unique parameter: this is a CODE BREAK change and you shall refresh ALL your server-side code to match the new signature (using a record passed by value as parameter will ensure faster code and seamless evolution of this structure)
file: [1b31d330a8] check-in: [f66814a621] user: G018869 branch: trunk, size: 875861
2012-02-03
14:54
associated TSQLRestServer.CacheFlush service for flushing the Server cache file: [61e06f2c6d] check-in: [e0800f4af4] user: G018869 branch: trunk, size: 874334
13:09
made TSQLRestCache thread-safe (access is now locked per table) file: [d384d93f74] check-in: [0301c59dc7] user: G018869 branch: trunk, size: 870729
2012-02-02
20:22
  • TSQLRestServerStaticInMemory binary format changed: now will store its content per field (to ensure better compression) - magic identifier changed
  • introducing TSQLRest.Cache and TSQLRestCache class to handle Client or Server side fast in-memory cache (with tuned configuration and timeout)
file: [b251e40426] check-in: [80bd3e5838] user: G018869 branch: trunk, size: 869553
2012-02-01
17:49
minor changes file: [ef4c936eeb] check-in: [7ca32cbc66] user: G018869 branch: trunk, size: 859375
2012-01-27
13:53
fixed issue when retrieving RTTI for interface methods with Delphi XE2 (layout changed) file: [e34991526f] check-in: [e94f5ea91a] user: User branch: trunk, size: 855681
2012-01-24
14:26
  • fixed rounding issue in ExtendedToString() and all corresponding wrappers like DoubleToStr*, Add(aDouble)..
  • get rid of wrong "Decimal" parameter in float to text conversion
file: [761b3f31b4] check-in: [bf0a9eab82] user: G018869 branch: trunk, size: 855529
2012-01-23
10:14
fix issue when handling null JSON objects in GetJSONObjectAsSQL() function file: [89eca6bd72] check-in: [a8dc9c352e] user: G018869 branch: trunk, size: 855551
2012-01-20
13:33
changed copyright notice to "(C) 2012" - yes, happy new year ! file: [5e759c0d52] check-in: [d8b446f0b5] user: G018869 branch: trunk, size: 854993
13:28
speed enhancement on filling records from multiple rows file: [090e492500] check-in: [eb25bf19d9] user: G018869 branch: trunk, size: 854993
10:25
faster TSQLRestServerStaticInMemory.LoadFromJSON and LoadFromBinary methods file: [d10a126ef2] check-in: [eb86fef8a9] user: G018869 branch: trunk, size: 854473
2012-01-18
21:25
small Delphi 2009+ warning fix file: [d0d73574ab] check-in: [5892d62da3] user: User branch: trunk, size: 853237
16:00
SynDBExplorer ensure that the supplied file name on command line is a true SQLite3 database file: [f3e490847d] check-in: [c41afa2717] user: G018869 branch: trunk, size: 853208
15:53
new FillStringGrid() function, ready to fill a regular TStringGrid file: [6e3acb0511] check-in: [2af8e888d3] user: G018869 branch: trunk, size: 853141
2012-01-17
19:57
minor code enhancements file: [bedebdc4d9] check-in: [29bec093fa] user: G018869 branch: trunk, size: 853102
2012-01-16
08:41
fix issue about missing last item in JSONToObject() function file: [7ec954231f] check-in: [3e56f6ef4d] user: G018869 branch: trunk, size: 853116
2012-01-12
09:30
  • SynDbExplorer now executes selected text statement (very convenient)
  • added UTF-8 BOM to CSV or TXT exports
file: [0994833056] check-in: [575933268c] user: G018869 branch: trunk, size: 853038
2012-01-11
12:49
  • fixed issue TSynTableStatement when only one column was retrieved
  • fix issue about transactions not working with TSQLRestServerStaticInMemory
  • fixed issue in TSQLRestServerStaticInMemory on SELECT with only one column
  • now TSQLRestClientURI.BatchUpdate() will set only ID, TModTime and mapped fields when called over a TSQLRecord on which a FillPrepare() was made (and no FillClose was performed)
file: [1ef2187d2b] check-in: [ad3e9c502e] user: G018869 branch: trunk, size: 852754
2012-01-07
12:20
code refactoring to allow compilation with Delphi XE2 background compiler (e.g. syntax check or code completion) file: [222cb59db6] check-in: [ddcf953db5] user: User branch: trunk, size: 847270
2012-01-06
10:44
TSQLRecordFill only maps if column is a valid field - fix "Error calling TSQLRecord.FillRow with non existing properties" issue file: [75b1faec6b] check-in: [b5a5919070] user: G018869 branch: trunk, size: 847142
2012-01-04
17:08
now nested TCollection and TStringList/TRawUTF8List objects are transmitted as true JSON arrays or objects for adding (POST) and update (PUT) - this will save bandwidth and increase compatibility with AJAX clients (they were formerly transmitted as JSON strings) - note that retrieval (GET) is not yet implemented, since it is faster to transmit directly the TEXT value as stored within the database file: [f60fc15cf7] check-in: [f87450236e] user: G018869 branch: trunk, size: 847013
17:07
TSQLRestServer.URI now returns "Location:" header without the digital signature (e.g. 'Location: People/11012') for a POST (=CRUD create/add) file: [f40ed4692f] check-in: [57c9ef5947] user: G018869 branch: trunk, size: 844679
2011-12-21
18:47
fixed some minor compilation errors file: [40b3f184b5] check-in: [4f2294edaa] user: User branch: trunk, size: 844442
2011-12-16
16:16
Interface-based SOA implementation continues file: [5744fdc177] check-in: [42e36c47d1] user: G018869 branch: trunk, size: 844419
2011-12-15
19:33
introducing new methods to handle interface-based Client-Server SOA using RTTI - only generic registering process yet - but sounds fine, and it seems to have enough RTTI available over Delphi 6 and up :) file: [8cdb9d247e] check-in: [7f8cbbbe44] user: G018869 branch: trunk, size: 843645
2011-12-14
08:33
try to avoid use of all unneeded FreeAndNil calls in the code - see http://www.nickhodges.com/post/Using-FreeAndNil.aspx file: [c6372cf845] check-in: [782a4fa14f] user: G018869 branch: trunk, size: 825055
2011-12-13
22:12
fix compilation issue file: [a3adf732d4] check-in: [4ebba84594] user: User branch: trunk, size: 825104
20:29
now TSQLRestServer.LaunchCallBack will check for an exact method signature match before executing it (if there is enough RTTI, i.e. Delphi 7 and up) file: [b5d1908c23] check-in: [6f7ddd5118] user: G018869 branch: trunk, size: 825035
2011-12-10
10:24
fix compilation warnings on UNICODE version of Delphi file: [24563e76e1] check-in: [400098ba8f] user: ab branch: trunk, size: 818726
2011-12-07
16:07
fix issue in TSQLRecord.FillFrom() which forgot to update InternalState file: [c1218701b0] check-in: [4d8613523e] user: G018869 branch: trunk, size: 818573
12:30
some minor code refactoring file: [4dfacb1f04] check-in: [0850e51412] user: G018869 branch: trunk, size: 818398
06:56
fix issue in SetInt64Prop() procedure which failed the update of a property with no explicit setter file: [09e5c3b480] check-in: [eff2485f1d] user: G018869 branch: trunk, size: 818644
2011-12-06
17:02
new TSQLRecord.CreateAndFillPrepareMany and FillPrepareMany methods, able to create a JOINed SELECT statement including all nested TSQLRecordMany properties (including custom WHERE clause if necessary) file: [2d49b03584] check-in: [8cef2fcbc5] user: G018869 branch: trunk, size: 818530
12:38
re-declared TSQLAccessRights record as an object, and added some dedicated methods: FromString, ToString, Edit file: [dd5c89639a] check-in: [8090be0806] user: G018869 branch: trunk, size: 813601
2011-12-02
19:56
continuing TSQLRecord.FillPrepareMany() method implementation (not finished yet) file: [d7d38a674d] check-in: [820f59e878] user: G018869 branch: trunk, size: 812352
2011-12-01
20:28
faster and more generic TSQLRecord.FillPrepare/FillRow implementation file: [01be7a82d3] check-in: [2c0e5fe01f] user: G018869 branch: trunk, size: 805084
2011-11-24
15:36
  • the TSQLRestServerCallBack method prototype has been modified to supply an addition aSession: cardinal parameter: this is a CODE BREAK change and you shall refresh ALL your server-side code to match the new signature
  • new TSQLRestServer.SessionGetUser method to be used e.g. by any TSQLRestServerCallBack method implementation to retrieve the connected user
  • fix issue about abusive session timeout: TSQLRestServer.SessionGet is now renamed SessionAccess and refreshes the session access timestamp each time a session is retrieved
file: [8ccb41180c] check-in: [e04dbb13d0] user: G018869 branch: trunk, size: 801464
2011-11-18
16:14
fixed LVCL compilation issue file: [fab3ba8eae] check-in: [91ccd08b4d] user: G018869 branch: trunk, size: 798630
2011-11-15
17:58
TPropInfo.CopyValue method now specifically handle copy of TCollection published properties items (used e.g. in TSQLRecord.FillFrom) file: [0d35e593b1] check-in: [0f0bc73310] user: G018869 branch: trunk, size: 798602
2011-11-11
13:52
  • TSQLRestClient.List and ListFmt methods now use TSQLRecordClass open array instead of TClass (for consistency)
  • new global RecordClassesToClasses() wrapper function to convert an array of TSQLRecordClass into the expected array of TClass
  • now TSQLRestServer.Auth service returns true JSON response as specified by its content type (for better AJAX compatibility)
file: [81046e1425] check-in: [5674fa9903] user: G018869 branch: trunk, size: 795397
2011-11-06
14:45
fix issue about record locking in TSQLRestClientURI.Retrieve method file: [b66b380cbf] check-in: [84bf8e1520] user: ab branch: trunk, size: 793836
2011-11-01
09:53
now TSQLRestServer.Auth service returns text/plain as content type (for better AJAX compatibility) file: [052e77fccb] check-in: [f888f68320] user: ab branch: trunk, size: 793597
2011-10-28
13:54
all EngineList methods (including TSQLRestServerStaticInMemory class) now handles an optional integer pointer, to return the count of row data (excluding field names) file: [5a1b3f8d8d] check-in: [9997c975d6] user: G018869 branch: trunk, size: 793437
2011-10-19
17:09
fixed issue in TSQLRecord.FillPrepare when the table has less columns that the filling TSQLTable (can occur e.g. when using aCustomFieldsCSV parameter in FillPrepare method) file: [da4d5df0d9] check-in: [0e68516af6] user: G018869 branch: trunk, size: 792444
14:56
fix unexpected exception raised in TSQLRecord.FillOne if FillPrepare was successfull, but did not return any row file: [260438c0cc] check-in: [967c1cb0dc] user: G018869 branch: trunk, size: 792246
2011-10-17
09:36
  • added TSQLOccasion to handle the special case of field type (like TCreateTime) in case of Upate/Insert/Select
  • TCreateTime published fields now are not modified at update
file: [a2671cf666] check-in: [b1686cc0ba] user: G018869 branch: trunk, size: 792049
2011-10-14
14:37
code clean-up of TSQLRestClientURI.SetUser file: [da960acd9f] check-in: [196df0b234] user: G018869 branch: trunk, size: 790575
2011-09-26
17:05
  • new overloaded TSQLRestServer/TSQLRestServerStatic.UpdateField() method
  • fixed TSQLRestServerDB.UpdateField(ByID=true) implementation
  • new overloaded TSQLRestServerDB.UpdateField method
file: [b400112ce9] check-in: [a7fad077bf] user: G018869 branch: trunk, size: 790525
2011-09-20
18:49
  • new UnicodeComparison parameter in TSQLTable.SearchValue to handle property non WinAnsi (code page 1252) characters
  • fixed potential issue in TSQLTable.SearchValue in case of invalid Client supplied parameter (now checks TSQLRest class type)
file: [9ea0936677] check-in: [de605b4011] user: G018869 branch: trunk, size: 788546
2011-09-19
14:56
better interface of TSQLTableJSON in-place process (dedicated constructor) file: [8731dcfdb3] check-in: [f9eb0363cb] user: G018869 branch: trunk, size: 786621
2011-09-17
18:05
Delphi XE2 compatibility: all tests passed (32 Bit) file: [ea8a2536b7] check-in: [40b9886964] user: ab branch: trunk, size: 786391
2011-09-16
12:31
new MakePrivateCopy property in TSQLTableJSON.Create, which will avoid creating a private copy of the JSON (used e.g. in SynDBExplorer to handle very large result sets, with half the memory) file: [756436a1bd] check-in: [17f6b15adb] user: G018869 branch: trunk, size: 786343
2011-09-13
15:28
documentation completion file: [a6bc5d887e] check-in: [dcb63946d8] user: G018869 branch: trunk, size: 785593
15:08
new sftCreateTime / TCreateTime published field type in TSQLRecord, which will be set to the current server time stamp at record creation file: [f80110b0da] check-in: [e04e0e58ed] user: G018869 branch: trunk, size: 784954
2011-08-30
07:04
fixed PUREPASCAL compilation of the framework file: [9ca4ee285f] check-in: [746753d45c] user: G018869 branch: trunk, size: 782785
2011-08-19
14:47
tuning and fixing logging implementation of the framework file: [08ad710fc6] check-in: [d3916ef410] user: G018869 branch: trunk, size: 782667
2011-08-12
15:08
first apparition of SQlite3BigTable: calling the Big Table engine from our ORM (using virtual tables) - not yet working file: [7e7cd0325c] check-in: [373d0a4640] user: G018869 branch: trunk, size: 781931
2011-08-09
18:20
  • new FormatUTF8() overloaded function, handling both '%' and '?' parameters (inserting '?' as inlined :(...): parameters, with proper string quote) - with associated regression tests
  • new TSQLRecord.Create, TSQLRecord.FillPrepare, TSQLRecord.CreateAndFillPrepare, TSQLRest.OneFieldValue, TSQLRest.MultiFieldValues, TSQLRestClient.EngineExecuteFmt and TSQLRestClient.ListFmt overloaded methods, accepting both '%' and '?' characters in the SQL WHERE format text, inlining '?' parameters with :(...): and auto-quoting strings
file: [4ba8bbf183] check-in: [09e8f38051] user: G018869 branch: trunk, size: 777963
2011-08-05
16:42
huge documentation enhancements, mostly about SynDB external database handling file: [6df42f2ce5] check-in: [6d26b53377] user: G018869 branch: trunk, size: 769707
07:46
added test of TModTime published property (i.e. latest update time) file: [0127873c5b] check-in: [2467c59ee6] user: G018869 branch: trunk, size: 769630
2011-08-04
15:59
  • new TSQLDBConnection.ServerTimeStamp property, which will return the external database Server current date and time as TTimeLog/Int64 value (current implementation handle Oracle, MSSQL and MySQL database engines - with SQLite3, this will be the local PC time, just as for other DB engines)
  • new ColumnTimeStamp method for TSQLDBStatement/ISQLDBRows, returning a TTimeLog/Int64 value for a date/time column
  • new sftModTime / TModTime published field type in TSQLRecord, which will be set to the current server time stamp before update/adding
  • new TSQLRest.ServerTimeStamp property, which will return the current server time as TTimeLog/Int64 value (will use the new /TimeStamp RESTful service to retrieve the exact server time)
file: [0a2469e8fd] check-in: [abcaa30fca] user: G018869 branch: trunk, size: 769465
08:44
  • TSynTests now writes the elapsed time in each test in the final report
  • new TSQLDBSQLite3ConnectionProperties.UseCache property (TRUE by default)
  • enhanced cache in SynDBSQLite3 unit
  • better testing of External DB access via Virtual tables
  • statement cache is now shared with SynDBSQLite3, via the new TSQLStatementCached object as defined in SynSQLite3.pas
  • now TSQLRestServerDB will unregister any TSQLVirtualTableModuleServerDB to avoid random GPF in TSQLVirtualTable.Destroy
  • CreateSQLMultiIndex and CreateSQLIndex methods now working on external DB virtual tables (using SynDB.TSQLDBConnectionProperties.SQLAddIndex)
  • enhanced destructor TSQLVirtualTable.Destroy
file: [2052e92210] check-in: [a4be8619ba] user: G018869 branch: trunk, size: 764096
2011-08-03
16:25
  • TSQLDBStatement class now expects a prepared statement behavior, therefore TSQLDBStatementPrepared class has been merged into its parent class, and inherited classes have been renamed TSQLDBStatementWithParams[AndColumns]
  • new TSQLDBConnectionProperties.SQLAddIndex method
  • new TSQLDBConnectionProperties.NewThreadSafeStatementPrepared and TSQLDBConnection.NewStatementPrepared methods, able to be overriden to implement a SQL statement caching (used e.g. for SynDBSQLite3)
  • SynDBSQLite3 unit now implements an internal cache of SQL statement: this will speed up the queries a lot (but parameters should be bound in order to profit from this cache)
  • new overloaded TSQLDBStatement.Bind() method, which can bind an array of const (i.e. an open list of Delphi arguments) to a statement
  • new TSQLStatementCached object, for caching of prepared SQLite3 statements
  • new TTestSQLite3ExternalDB class to test TSQLRecordExternal records, i.e. external DB access from the mORMot framework (use an in-memory SQLite3 database as an external SynDB engine for fast and reliable testing)
file: [5332509f47] check-in: [9a01084359] user: G018869 branch: trunk, size: 764369
2011-07-29
16:21
SQLite3DB unit now completed and optimized - still need to write all appropriate regression tests, and do the benchmarking/testing over several external databases (at least with an external SLQLite3 db in common regression tests classes) file: [6cf1161046] check-in: [d016e34338] user: G018869 branch: trunk, size: 763806
2011-07-28
19:22
  • new overloaded TSQLDBStatement.Execute() method, able to mix % and ? parameters in the SQL statement
  • new TSQLDBStatement.BindNull() method
  • new overloaded TSQLDBStatement.Bind() method, able to bind values from a TVarDataDynArray (used e.g. for fast binding SQLite3 virtual table columns)
  • added TSQLRequest.BindNull method and associated sqlite3_bind_null function
  • TSQLRestServer.UpdateField now accepts to search by ID or by value (used e.g. by rewritten TSQLRestServer.AfterDeleteForceCoherency method)
  • TSQLRestServer.UpdateField now accepts to search by ID or by value (used e.g. by rewritten TSQLRestServer.AfterDeleteForceCoherency method)
  • new ExtractInlineParameters procedure to handle :(1234): SQL statements
  • new TSQLRecordProperties.SQLUpdateSet property
  • SQLite3DB.pas unit completed and a lot enhanced (especially in speed optimization)
file: [874252c942] check-in: [d1e353de46] user: G018869 branch: trunk, size: 761121
2011-07-27
15:54
introducing TSQLRestServerStaticExternal class in SQLite3DB unit file: [6aceda22a4] check-in: [5ce5ff15da] user: G018869 branch: trunk, size: 758849
2011-07-22
09:40
new SynSQLite3 unit extracting the SQLite3 wrapper from the previous SQLite3 unit: this unit can therefore be used with our SynDB classes, without our mORMot overhead (and features) file: [d47f290af0] check-in: [75b5b81a88] user: G018869 branch: trunk, size: 755206
2011-07-21
12:51
  • new TSQLDBConnectionProperties.SQLCreate/SQLAddColumn virtual methods, using protected SQLFieldCreate virtual method to retrieve the SQL field definition from protected fSQLCreateField[Max] properties: SQL statement generation as requested for mORMot is now much more generic than previously
  • fix several issues in SynDB/SynOleDB units
file: [92e5af9ef4] check-in: [cc1cd400bb] user: G018869 branch: trunk, size: 756359
2011-07-20
14:38
BLOB won't work in SQL without parameter binding file: [80b5c62e68] check-in: [a418a77bed] user: G018869 branch: trunk, size: 755895
14:25
  • new TSQLDBConnectionProperties.SQLIso8601ToDate virtual method
  • SynDBExplorer now add a SQL filter when double-clicking on a grid result cell (with correct text/numerical/date format handling) - very handy ;)
file: [90bf64915a] check-in: [0a7ad57de0] user: G018869 branch: trunk, size: 755873
11:47
fixed CSV export in countries where ',' is used as decimal separator (e.g. in "douce France") file: [bf3a14b266] check-in: [64d41b9219] user: G018869 branch: trunk, size: 755726
2011-07-19
11:33
fixed issue in SetInt64Prop() with a setter method file: [be91a7080d] check-in: [d36c88fdb5] user: G018869 branch: trunk, size: 755432
2011-07-15
13:23
  • the shared fTempMemoryStream is not available any more (not thread-safe)
  • new TSQLRest.AcquireWrite/ReleaseWrite protected methods, used by TSQLRestServer.URI to safely write to the DB (e.g. for POST/PUT/DELETE...) with TSQLRest.AcquireWriteTimeOut, both thread-safe and transaction-safe
  • TSQLRest.TransactionBegin / Commit / RollBack methods now expect a SessionID parameter in order to allow safe concurent access: writing to the database is queued within a single client session
  • fixed issue with TAuthSession.IDCardinal=0 after 76 connections
  • updated documentation
file: [c933665829] check-in: [a63549f986] user: G018869 branch: trunk, size: 754895
09:39
make exported json more human readable file: [c018ff2985] check-in: [fbe1b26a4c] user: G018869 branch: trunk, size: 747827
09:34
  • new TSQLTable.GetCSVValues method
  • GetJSONValues() is now using an internal TRawByteStringStream when the expected result is a RawUTF8 (avoid copying content twice, and is perfectly thread-safe)
  • the shared fTempMemoryStream is not available any more (not thread-safe)
  • TTextWriter.CreateOwnedStream now create an internal TRawByteStringStream instance for faster process and direct retrieval in the Text method
  • JSONEncode*() global functions will use an internal TRawByteStringStream instead of a supplied TMemoryStream
  • TSQLRibbon.AddToReport method can work with self=nil
  • fixed an endless loop in TGDIPages.DrawTextAcrossCols when wrapping text
  • if TGDIPages.WordWrapLeftCols=TRUE, won't wrap column headers
file: [249a9d9b10] check-in: [ff9623bc90] user: G018869 branch: trunk, size: 747745
2011-07-14
19:23
  • new TRawByteStringStream class
  • more complete TQuery emulation
  • fixed '-.3' currency values (into '-0.3') for SynDBOracle
  • method TSQLTable.InitFieldTypes return faster and more accurate type for numbers
  • now SynDBExplorer can close tabs when double-clicking on it
file: [9e75b846a8] check-in: [22a6c85b4e] user: G018869 branch: trunk, size: 747332
2011-07-13
16:14
minor fixes and enhancements file: [c933013984] check-in: [7e1f4a3765] user: G018869 branch: trunk, size: 747120
13:00
  • new Split() function
  • faster GetInt64() function
  • Iso8601ToSecondsPUTF8Char() now returns 0 in case of unexpected format
  • new TSQLDBStatement.UpdateCount property, used to retrieve the number of updates made by the latest executed statement
  • ExecuteDirect method returns the UpdateCount value
  • GetSQL*() methods now includes the domain name inside the table name (e.g. 'DOMAIN.TABLE' is the expected table name) - corresponding methods modified in consequence
  • fixed issue when reading BLOB/CLOB content with size = 0
  • TSQLTable.InitFieldTypes will now also use column type retrieved during JSON parsing
file: [56b4413679] check-in: [10de6e2bca] user: G018869 branch: trunk, size: 747121
2011-07-12
18:48
  • added GetSQLTableNames method to retrieve all table names
  • fixed issue in SynDBOracle when retrieving CBLOB column data
  • fixed issue in TPropInfo.GetBinary method with dynamic arrays (used e.g. by TSQLRestServerStaticInMemory.SaveToBinary)
  • changed TSQLTable field width computation
  • added new TSQLTableToGrid.SetFieldFixedWidth method
  • first editable component is now focused by default by SQLite3UIEdit
  • SQLite3UIOptions unit now gets rid of TMS components dependency
file: [f9d7e77de9] check-in: [65a6d26f81] user: G018869 branch: trunk, size: 746072
12:29
Thread-safety enhancements:
  • TSQLRestServerStaticInMemory now uses a per-Table Critical Section to have its EngineList, EngineRetrieve, EngineAdd, EngineUpdate, EngineDelete, EngineRetrieveBlob, EngineUpdateBlob methods begin thread-safe
  • enhanced TSQLRestServer.URI thread-safety (e.g. Sessions access)
file: [c9b1e16487] check-in: [dce5d3a664] user: G018869 branch: trunk, size: 745682
2011-06-28
13:33
- fixed issue in produced JSON stream using '=' instead of ':'
file: [ea0e45e303] check-in: [ef3a66cd82] user: G018869 branch: trunk, size: 742071
2011-06-24
16:51
SynOleDB now executes statements and retrieve results at light speed !!! :) - parameters use still to be tested file: [82462d52d6] check-in: [243ab58e23] user: ab branch: trunk, size: 742003
2011-06-17
14:23
  • fixed issues in SQLite3UIEdit
  • several small compilation or documentation fixes
file: [2f463c7dc8] check-in: [bdf1f00225] user: ab branch: trunk, size: 742104
2011-06-16
15:42
fixed some potential compilation issues file: [ae63c18106] check-in: [215dfe5ac7] user: ab branch: trunk, size: 742105
07:19
documentation enhancement file: [65b249007f] check-in: [b2fa02046a] user: ab branch: trunk, size: 742034
2011-06-15
06:00
correction attempt for currency edition in SQLite3UIEdit file: [69cbaa20f4] check-in: [6f2a76894f] user: ab branch: trunk, size: 741655
2011-06-10
14:27
new SynOleDB unit file: [43ceba338a] check-in: [fac9c4ffce] user: ab branch: trunk, size: 741056
2011-06-07
06:14
changed all constant ansichar declaration from #.... into chr() in order to allow compile tests with non 1252 Windows... file: [bf961c3387] check-in: [fa3685333d] user: ab branch: trunk, size: 739445
2011-06-03
15:55
  • updated documentation
  • fix '<' character HTML export in SynProject
file: [29bd712727] check-in: [85e0d42d7a] user: ab branch: trunk, size: 739407
2011-05-31
14:04
code modifications to compile with Delphi 5 compiler (no ORM code compiles yet: so only low-level units like SynCommons / SynCrypto / SynPdf are tested)
file: [5dc3b0ee6b] check-in: [da448f54f0] user: ab branch: trunk, size: 739403
2011-05-29
15:23
new OnAuthentificationFailed method to let the Client ask for a refreshed user name and password file: [a8286c112d] check-in: [c30985b26a] user: ab branch: trunk, size: 738980
2011-05-27
15:42
new right-click popup menu accessible for editor, with fast access to all tool functions file: [50e9210495] check-in: [d97807044c] user: ab branch: trunk, size: 736309
2011-05-26
14:41
SynProject: new "Copy as HTML" function (accessible from new editor right-click popup menu) - to be used e.g. for easy Blogging :) file: [6608558798] check-in: [e33fa78680] user: ab branch: trunk, size: 735843
09:59
  • BigTable: fixed potential issue when compiled with THREADSAFE
  • enhanced documentation
file: [64c2667f67] check-in: [c83b1d9aa5] user: ab branch: trunk, size: 735841
09:03
new aCustomFieldsCSV parameter for FillPrepare / CreateAndFillPrepare methods of TSQLRecord, to retrieve only neeeded fields: be aware that not specified fields will be left untouched, so a later Update() call may corrupt the row data - this optional parameter is about to save bandwidth when retrieving records field in a loop file: [62da6f8416] check-in: [d36871c73a] user: ab branch: trunk, size: 735533
2011-05-25
17:51
release notes updated file: [92e3227dc9] check-in: [e46c44dd28] user: ab branch: trunk, size: 732453
17:21
fixed compilation error file: [5496aa3cf3] check-in: [3b42ddc878] user: ab branch: trunk, size: 732157
15:31
documentation enhanced file: [50ceb31dd4] check-in: [29abbcd43c] user: ab branch: trunk, size: 732201
14:21
  • added property CommitShouldNotUpdateFile to TSQLRestServerStaticInMemory to have pure in-memory virtual tables (i.e. COMMIT won't write anything)
  • now deletes outdated per-user sessions
  • custom SQL functions now working as exepected via high-level method TSQLDataBase.RegisterSQLFunction and TSQLDataBaseSQLFunction class
  • updated framework documentation
file: [5e06bb9c72] check-in: [4f012f51f8] user: ab branch: trunk, size: 732111
2011-05-24
17:48
unassociate all TSQLRecord with a destroyed model to some fix any related border-side effects file: [eb10d5001a] check-in: [6af3901a33] user: ab branch: trunk, size: 731558
05:27
fixed GPF at session closing in TSQLRestClientDB file: [8356cfce6a] check-in: [4deae6c8ad] user: ab branch: trunk, size: 731252
2011-05-23
16:08
session and uri authentication implemented - also associated documentation file: [0fc49e1444] check-in: [dc06f54458] user: ab branch: trunk, size: 731043
2011-05-22
18:08
In-memory virtual tables are now written on disk by default. For instance, COMMIT will call the UpdateToFile method. file: [9bb9b2e741] check-in: [28baa05792] user: ab branch: trunk, size: 724448
2011-05-20
17:19
introducing framework security and authentication file: [b11f9a5bb9] check-in: [a08c2c046a] user: ab branch: trunk, size: 724273
2011-05-17
15:29
  • TZipRead and TZipWrite now handle Unicode file name inside zip (UTF-8 encoded)
  • new .synlz file format, used to fast .log compression (with UnSynLz.dpr for uncompressing this efficient but proprietary file format)
  • TSynLogFamily.Destroy is now able to archive outdated .log files into .synlz or .zip, in a custom destination directory
file: [986de437df] check-in: [9877caf56e] user: ab branch: trunk, size: 703151
2011-05-16
08:04
Explicitly enhance SOA orientation of the framework file: [e06a2dcef6] check-in: [fa656104ad] user: ab branch: trunk, size: 703127
2011-05-14
09:07
  • changed the way Virtual Table modules are associated to TSQLRecordVirtual - not by the class name any more
  • documentation update
file: [054dd76b41] check-in: [7a9cdb7bc4] user: ab branch: trunk, size: 700202
2011-05-13
14:51
  • updated and tested Virtual Tables implementation
  • enhanced framework documentation to introduce Virtual Tables + some fixes
  • see e.g. TSQLVirtualTableLog and TSQLVirtualTableCursorLog and associated documentation for details and sample code
file: [91463f3778] check-in: [1f7fd32764] user: ab branch: trunk, size: 700778
2011-05-12
21:25
  • Virtual Tables tests added - implementation sounds complete by now, and working as expected
  • TSQLRestServerStaticInMemory can now store its content into UTF-8 JSON or an optimized (SynLZ) compressed binary format with variable-length record storage: e.g. a 27 KB Json_Dali.JSON content is stored into a 6 KB Binary_Dali.Binary file (this data has a text redundant field content in its FirstName field); 502 KB People.json content is stored into a 92 KB People.Binary file :)
  • fix compilation issue in SQlite3i18n.pas
file: [82a9a7006e] check-in: [709bddc9eb] user: ab branch: trunk, size: 690326
2011-05-10
15:33
Delphi virtual tables implemented - need to begin the testing now file: [ab7a7b694c] check-in: [9327f4ae81] user: ab branch: trunk, size: 674318
11:40
updated the documentation in order to be more clear about using transactions in the framework file: [526a4156f5] check-in: [c50e494a5b] user: ab branch: trunk, size: 665606
2011-05-06
16:28
virtual table using in-memory fast engine, and JSON storage on disk (not yet finished) file: [1f90e44356] check-in: [d8f92bdadb] user: ab branch: trunk, size: 664130
10:00
  • introducing in SQLite3Commons TSQLVirtualTableModule / TSQLVirtualTable / TSQLVirtualTableCursor classes for a generic Virtual table mechanism (used e.g. by TSQLVirtualTableModuleDB in the SQLite3 unit)
  • new TSQLRecordVirtualTableAutoID and TSQLRecordVirtualTableForcedID classes, used to access any TSQLVirtualTable in our ORM
file: [1e340eabd6] check-in: [10e47ac1f5] user: ab branch: trunk, size: 652368
2011-05-04
18:06
  • new TSQLDataBase.RegisterSQLFunction method and associated TSQLDataBaseSQLFunction classes, for a generic SQL function implementation (including a dynamic array search SQL function)
  • added TDynArray.ElemSave/ElemLoad/ElemLoadClear/ElemLoadFind methods
file: [f7901e9261] check-in: [f5f9e96de6] user: ab branch: trunk, size: 635419
2011-04-30
10:55
fixed compilation with Delphi Unicode (2009/2010/XE) file: [55e18108bf] check-in: [21bf5a0e2a] user: ab branch: trunk, size: 635314
2011-04-29
15:15
fastest internal cdecl qsort() function (optimized for PAnsiChar) file: [86e4a5fd3e] check-in: [b50475a1c9] user: ab branch: trunk, size: 635320
2011-04-28
14:45
new method WriteObjectAsString for faster serialization of published properties into TEXT file: [1112126fb0] check-in: [2e4f6220b3] user: ab branch: trunk, size: 635251
2011-04-27
14:28
introducing TSQLRecordRTree to implement R-Tree virtual tables - and new TSQLRecordVirtual parent table for all virtual tables including TSQLRecordFTS* file: [7c23f8fd0b] check-in: [736af989cf] user: ab branch: trunk, size: 634263
2011-04-26
15:17
  • added regression tests for sftObject kind of properties
  • fixed some issues in handling sftObject kind of properties
  • written associated documentation for TRawUTF8List/TPersistent/TCollection properties in TSQLRecord
file: [44e7de1ba2] check-in: [09caae83f0] user: ab branch: trunk, size: 625728
2011-04-22
15:51
ORM now handle TPersistent, TStrings, TCollection and TRawUTF8List as published properties (stored as TEXT in ObjectToJSON format) file: [7c2a3e0951] check-in: [84edebde5b] user: ab branch: trunk, size: 625646
2011-04-21
15:40
minor changes file: [cdddabfbb3] check-in: [23ad5c6672] user: ab branch: trunk, size: 620320
2011-04-20
16:03
  • fixed issue in TSQLRestServerStats.DebugMessage
  • introducing LogView sample application
file: [4728e84d50] check-in: [186436fe21] user: ab branch: trunk, size: 620074
2011-04-18
20:57
  • TSQLRestServerDB now uses fast TDynArrayHashed for its internal prepared statement cache
  • added logging in most units
file: [ebc32c380a] check-in: [ab5e2473ec] user: ab branch: trunk, size: 620068
17:34
  • fixed issue in serializing sftCurrency type in TSQLRecord.GetJSONValue
  • update SQLite3 engine to version 3.7.6.2
file: [7ee85a1165] check-in: [effdec39f4] user: ab branch: trunk, size: 619205
2011-04-15
13:55
updated documentation file: [2425dcae10] check-in: [c3d5d774ce] user: ab branch: trunk, size: 619494
07:13
  • .mab file now contain the file name
  • TSynLog Enter/Leave speed up
file: [415055003e] check-in: [c99a910a88] user: ab branch: trunk, size: 619300
2011-04-14
19:27
  • update SQLite3 engine to version 3.7.6.1
  • regression test now exclude fixed auto generated ID sequence (may vary, just like happened for 3.7.6)
file: [a03e552d92] check-in: [7ea77dcbf1] user: ab branch: trunk, size: 618982
15:27
introducing global WITHLOG conditional file: [96728b9fcc] check-in: [f28e6391f9] user: ab branch: trunk, size: 619028
2011-04-07
18:34
  • added TMemoryMapText class to fast handle big UTF-8 text files (like logs)
  • now TFileVersion is a regular class, not an object/record any more (this was incoherent since Delphi 2010)
  • now TSynCache will use faster TDynArrayHashed for its content hashing
  • source can now be parsed per all Delphi IDE pre-parser (dual declaration as record or object because of Delphi 2010 and up was not understood)
file: [30c5857293] check-in: [479a746db5] user: ab branch: trunk, size: 618800
2011-04-06
19:25
  • added TMemoryMap and TSynMemoryStreamMapped to handle memory-mapped files
  • now TTextWriter can have a custom internal buffer size (default 1024 bytes)
  • now TFileBufferWriter is a regular class, not an object/record any more
  • .mab file is now compressed: a 900 KB .map is reduced into a 68 KB .mab file :)
file: [02c3b22656] check-in: [a286d5c455] user: ab branch: trunk, size: 618706
2011-03-30
15:10
  • all Exceptions can be automaticaly logged on request
  • logs can contain serialized objects, dynamic arrays, enumerates and sets values
file: [99efe287ae] check-in: [bc2254adb1] user: ab branch: trunk, size: 618655
2011-03-28
16:07
TSynLog enhanced with new features like auto flush after some timeout period file: [54ed6b00e2] check-in: [bbb45c117b] user: ab branch: trunk, size: 616687
2011-03-27
14:47
introducing TSQLLog class able to log directly a TObject instance content as JSON file: [d5b5c73538] check-in: [29643c75b6] user: ab branch: trunk, size: 616602
2011-03-25
20:22
introducing new Logging classes and functions file: [517ae0fd6e] check-in: [156a9090f4] user: ab branch: trunk, size: 615507
13:09
  • buttons are now created in the expected order (added from left to right ;)
  • code refactoring, to have common methods shared for future use
file: [aa29f12d16] check-in: [3b80951fe6] user: ab branch: trunk, size: 614849
12:36
  • TSQLRecordMany.DestGetJoined* methods now accept generic TSQLRest class
  • ExecuteList defined in TSQLRest, so now available also in TSQLRestServer
file: [f06991c0ae] check-in: [f2f0a44d64] user: ab branch: trunk, size: 614820
2011-03-24
10:21
Now JSONToObject will be able to unserialize directly a TCollection or a TStrings file: [ac92ca5df3] check-in: [97e16b4836] user: ab branch: trunk, size: 614144
10:05
Now ObjectToJSON will be able to serialize directly a TCollection or a TStrings file: [d091ffb076] check-in: [8b22bf5bc8] user: ab branch: trunk, size: 613947
2011-03-23
17:06
now use TMS component pack only if USETMSPACK global conditional is defined: by default, will use only VCL components to create the Ribbon and all other screens file: [3de03cc0c4] check-in: [d0ff9c1078] user: ab branch: trunk, size: 614108
13:24
new TSQLRest.Retrieve(aPublishedRecord, aValue: TSQLRecord) and TSQLRecord.Create(aClient: TSQLRest; aPublishedRecord: TSQLRecord..) methods file: [812a6e6c0f] check-in: [65e5b91dc1] user: ab branch: trunk, size: 613652
07:59
enhanced TSQLRecordMany.DestGetJoinedTable method to handle custom fields file: [46f391aa13] check-in: [c322380e76] user: ab branch: trunk, size: 612053
2011-03-22
20:30
fixed issue in HTTP server file: [13717443c1] check-in: [55636becc9] user: ab branch: trunk, size: 610584
18:53
try to avoid GPF when null is returned by SQLite3 for a "" field - see http://synopse.info/forum/viewtopic.php?id=275 file: [1c594a53ba] check-in: [0fbcfa621e] user: ab branch: trunk, size: 610430
14:53
dynamic arrays can now be specified for TSQLRecord published properties: a new sftBlobDynArray field kind has been added - will be stored as BLOB in the database (following the TDynArray.SaveTo binary stream layout), and will be transmitted as Base64 encoded in the JSON stream - we implemented a sftBlobRecord field kind, but Delphi RTTI is not generated for published properties of records: so our code is disabled (see PUBLISHRECORD conditional) :( - but you can use dynamic arrays of records file: [9091bb404f] check-in: [2149eb9615] user: ab branch: trunk, size: 610377
2011-03-21
22:08
continuing dynamic arrays in TSQLRecord implementation file: [08d2a774f0] check-in: [958d1c6131] user: ab branch: trunk, size: 604461
18:42
  • dynamic arrays can now be specified for TSQLRecord published properties: a new sftDynArray field kind has been added - will be stored as BLOB in the database (following the TDynArray.SaveTo binary stream layout), and will be transmitted as Base64 encoded in the JSON stream
  • dynamic arrays now handled in the JSONToObject and ObjectToJSON functions (will follow TTextWriter.AddDynArrayJSON format, i.e. plain JSON array for common types, but Base64 encoded streom for other arrays)
file: [3515977586] check-in: [910e72d4ed] user: ab branch: trunk, size: 601184
09:09
  • MAX_SQLFIELDS default is still 64, but can now be set to any value (64, 128, and 256 are optimized) so that you can have any number of fields in a Table
  • MAX_SQLTABLES default is now 256, i.e. you can have up to 256 tables in a TSQLModel instance (you can set any other value, on need)
file: [bd5d1d1b10] check-in: [aa4b00652c] user: ab branch: trunk, size: 593349
2011-03-18
17:05
for TSQLRecord, parent fields are listed first as children published properties file: [d17f0e6b3b] check-in: [bdd1ae6bbd] user: ab branch: trunk, size: 593158
2011-03-17
16:41
updated framework documentation file: [a159762989] check-in: [1ad20a1648] user: ab branch: trunk, size: 593086
2011-03-15
17:24
  • new FindAndFill / FindAndDelete / FindAndUpdate / FindAndAddIfNotExisting methods for TDynArray
  • introducing the new tftDynArray property type for TSQLRecord (not yet finished)
file: [35b1e88f33] check-in: [32b7777498] user: ab branch: trunk, size: 590332
2011-03-14
16:23
  • fixed memory leak in TDynArray.AddArray
  • added checksum to binary stream format used by TDynArray serialization (format changed!)
  • new TTextWriter.AddDynArrayJSON and TDynArray.LoadFromJSON methods for UTF-8 JSON serialization of dynamic arrays
file: [434d026b8c] check-in: [38ea4ff294] user: ab branch: trunk, size: 587948
2011-03-11
22:25
minor fixes before release file: [55e2c89a83] check-in: [45f402f767] user: ab branch: trunk, size: 587968
19:47
LVCL and Delphi 2009/2010/XE compatibility fixes file: [b6c360fee0] check-in: [faed9f2b35] user: ab branch: trunk, size: 587944
17:32
fix "Error: unrecognized token" issue in TSQLRestServer.AfterDeleteForceCoherency when deleting records with some required coherency checks file: [f75bedcce0] check-in: [8affd6d98d] user: ab branch: trunk, size: 587658
2011-03-03
16:43
  • new SynTaskDialog unit, implementing the Vista/Seven TaskDialog, and with a native Delphi emulation under XP/2K :)
  • start of deep code refactoring of the UI part of the framework, to be independent from the TMS components
file: [c790859c21] check-in: [c52b03dec1] user: ab branch: trunk, size: 587579
2011-03-01
16:14
added a magic pattern check to ignore broadcasted WM_COPYDATA message file: [cfb0a4995f] check-in: [bef538bb8b] user: ab branch: trunk, size: 585847
08:55
try to fix slow network access file: [3350f6b47b] check-in: [d50b9d8d0b] user: ab branch: trunk, size: 585362
2011-02-28
16:51
new TSQLRestClientURI methods to implement BATCH sequences to speed up database modifications: after a call to BatchStart, database modification statements are added to the sequence via BatchAdd/BatchUpdate/BatchDelete, then all statments are sent as once to the remote server via BatchSend - this is MUCH faster than individual calls to Add/Update/Delete in case of a slow remote connection (typically HTTP over Internet)
file: [3c009a714e] check-in: [9571795732] user: ab branch: trunk, size: 585341
10:18
TSQLModel implementation speed up, in case of a huge number of registered TSQLRecord in the database Model file: [9374a2c635] check-in: [380ef32946] user: ab branch: trunk, size: 569535
2011-02-27
15:16
  • fixed issue for unique field validation in SynBigTable
  • new TSynTableData.FilterSBFValue/ValidateSBFValue methods
file: [c44789d475] check-in: [236bdb3363] user: ab branch: trunk, size: 568470
2011-02-26
12:05
  • record validation now uses the generic TSynValidate mechanism, common with our main ORM framework, compliant with true multi-tier architecture: use Table.Validate method (see e.g. the update CheckConstraints)
  • record filtering now uses the generic TSynFilter mechanism, common with our main ORM framework, compliant with true multi-tier architecture: use Table.Filter method
  • dedicated TSynTableFieldProperties.Validate method for validation (e.g. a TSynValidateTableUniqueField instance is created if tfoUnique is in Options)
  • dedicated TSynTableFieldProperties.Filter method for filtering (using common TSynFilter classes, working at UTF-8 Text content)
file: [b78069d239] check-in: [793ffe2790] user: ab branch: trunk, size: 568457
09:25
minor fixes and code refactoring file: [268b9fb492] check-in: [cf858fb1d2] user: ab branch: trunk, size: 568350
2011-02-25
13:41
now ensure that no published property named ID or RowID was defined (this unique primary key field must be handled directly by TSQLRecord) file: [2d7c68af13] check-in: [5576796c9e] user: ab branch: trunk, size: 568830
13:23
the ORM will now include all published properties of the parents, up to TSQLRecord, to the database fields (it was only using the published properties at the topmost class level) file: [e971647cac] check-in: [f135274175] user: ab branch: trunk, size: 568444
10:37
  • manual handling of TSQLRecord.ID property serialization
  • serialization of parent properties in TJSONSerializer.WriteObject() and ObjectToJSON()
file: [7ad634c67a] check-in: [56bccf9905] user: ab branch: trunk, size: 565635
2011-02-23
21:35
fixed issue in ORM parsing file: [f031356c3b] check-in: [87600f0215] user: ab branch: trunk, size: 564480
21:24
code seems stable -> disabled assert file: [7e1861a825] check-in: [62ab23d88a] user: ab branch: trunk, size: 564407
20:29
code clean up and speed enhancement file: [450b597f2b] check-in: [29c9fbbfeb] user: ab branch: trunk, size: 564404
17:40
new TJSONSerializer class and ObjectToJSON/JSONToObject method file: [6aa4ae06d0] check-in: [caf561aa07] user: ab branch: trunk, size: 561634
10:24
  • TSQLFilter* and TSQLValidate* are renamed TSynFilter* and TSynValidate*, and now implemented in SynCommons.pas (this may be used also with TSynTable and Big Table)
  • unique field validation is implemented in SQLite3Commons.pas
file: [38d95facaf] check-in: [0437c159fd] user: ab branch: trunk, size: 543536
2011-02-22
21:12
  • now handle TSQLRecord automated filtering (using TSQLFilter classes) and validation (using TSQLValidate classes)
  • unique field validation is now in TSQLRecord.Validate (better multi-tier architecture)
file: [6bca0a176c] check-in: [5c03626961] user: ab branch: trunk, size: 568877
18:04
  • new GetCardinalDef(), IsValidEmail, IsValidIP4Address(), and GetCaptionFromClass() procedures or functions (with associated tests)
  • new grep-like IsMatch() function for basic pattern matching
  • TSQLRecord field content validation is handled in the new TSQLRecord.Validate virtual method, or via some TSQLValidate classes - see TSQLValidateRest, TSQLValidateIPAddress, TSQLValidateEmail, TSQLValidatePattern, TSQLValidatePatternI, TSQLValidateText, TSQLValidatePassWord e.g.
file: [80f0d4033d] check-in: [14785e263f] user: ab branch: trunk, size: 567580
2011-02-21
22:21
  • now handle TSQLRecord automated filtering (using TSQLFilter e.g.)
  • Delphi 2009/2010/XE compatibility fixes
file: [a9a9529320] check-in: [37805a5d41] user: ab branch: trunk, size: 540763
18:02
  • new ConvertCaseUTF8(), UpperCaseU(), LowerCaseU() functions
  • introducing direct content filtering and validation using TSQLFilterOrValidator dedicated classes
  • filtering is handled directly in the new TSQLRecord.Filter virtual method, or via some TSQLFilter classes - TSQLFilterUpperCase, TSQLFilterUpperCaseU, TSQLFilterLowerCase, TSQLFilterLowerCaseU and TSQLFilterTrim e.g.
file: [59a099b997] check-in: [85dfa822ed] user: ab branch: trunk, size: 540252
13:37
  • wider usage of TSQLRecordProperties, for faster RTTI access, via the new class function TSQLRecord.RecordProps: TSQLRecordProperties: only virtual class function or procedure are now defined in TSQLRecord
  • introducing the GarbageCollector TObjectList for handling a global garbage collector for instances which must live during the whole executable process (used e.g. to avoid a memory leak for "class var" or such variables)
  • new PatchCodePtrUInt() procedure
file: [7f733e5650] check-in: [f8725678fd] user: ab branch: trunk, size: 530389
2011-02-20
17:38
enhanced TSQLRecordProperties usage in whole framework for faster RTTI file: [e68e30f6aa] check-in: [c6be5bcf5c] user: ab branch: trunk, size: 537340
2011-02-19
08:43
fix possible memory corruption (write after end of buffer) file: [b7f70f6ace] check-in: [26b2f1f07b] user: ab branch: trunk, size: 536589
2011-02-18
15:13
new "From code" button in SynProject internal Graph Window (not working yet) file: [e0f5670e6a] check-in: [c3caef7f4e] user: ab branch: trunk, size: 536502
2011-02-08
17:07
we reach year 2011 - let's celebrate! file: [2884e86ee7] check-in: [b59d83be6d] user: ab branch: trunk, size: 536433
2011-02-07
19:08
compilation with Delphi 2009/2010/XE file: [000674c9ed] check-in: [fbd0c9400b] user: ab branch: trunk, size: 536421
18:02
new CreateInternalWindow() for creating a GDI message handler in any object file: [64c8ca0376] check-in: [ad8ba37e93] user: ab branch: trunk, size: 536429
2011-02-04
14:55
minor fix for handling wrong date time fild in TSQLTable.GetVariant file: [67bfc8b709] check-in: [9d779034ed] user: ab branch: trunk, size: 538720
14:51
new TSQLTable.GetVariant method file: [75aef95cbd] check-in: [df7e1c6615] user: ab branch: trunk, size: 538607
08:58
  • with Delphi 2009/2010/XE, you can define any string parameter in your TSQLRecord definition (will be handle as sftUTF8Text field)
  • with Delphi 2009/2010/XE, WriteObject, ReadObject and CopyObject functions now handle string (UnicodeString) properties, as TINIWriter.WriteObject method does also: UTF-8 encoding is used at the storage level
file: [4ba54a07bd] check-in: [3a476961bc] user: ab branch: trunk, size: 535845
2011-02-02
13:30
new sqlite3_stmt_readonly function and TSQLRequest.IsReadOnly property (engine 3.7.5 feature) file: [c4f44e6259] check-in: [b920169594] user: ab branch: trunk, size: 531676
2011-02-01
14:43
  • new TPropInfo.SetVariant/GetVariant methods
  • new GetFieldValue/SetFieldValue and GetFieldVariant/SetFieldVariant methods for TSQLRecord
file: [8c611ca5fe] check-in: [a5189713f7] user: ab branch: trunk, size: 531836
08:52
updated SQLite3 engine to version 3.7.5 file: [a400b07a0c] check-in: [e9cafa3892] user: ab branch: trunk, size: 549338
2011-01-30
15:07
made CreateCopy method dynamic file: [2178e65a80] check-in: [37d5c99bf8] user: ab branch: trunk, size: 549064
2011-01-29
19:22
can now specify an index name to avoid duplicated names file: [18bc9a5ecb] check-in: [5fa7c392a0] user: ab branch: trunk, size: 549055
2011-01-28
14:30
some TSQLTable.ExpandAsString rewrite file: [ec7d34fc40] check-in: [86d07846e5] user: ab branch: trunk, size: 548896
14:29
new TSQLTable.GetString method file: [fb81d6a5af] check-in: [11b13c25eb] user: ab branch: trunk, size: 548972
07:30
added new TSQLRestServer.CreateSQLMultiIndex() method file: [9bfa3eebab] check-in: [57df69476d] user: ab branch: trunk, size: 547382
2011-01-26
17:50
fixed issue in TPdfDocumentGDI.VCLCanvasSize - PDFA/1 properties (not working yet) file: [a06ec176fa] check-in: [7422303902] user: ab branch: trunk, size: 546579
2011-01-22
11:20
LVCL compatibility check of the SQLite3 framework file: [1c83e8d2d0] check-in: [d9cdb33736] user: ab branch: trunk, size: 546520
2011-01-20
08:41
fixed issue in TSQLRestServerNamedPipe[Response] multi-thread architecture: FastMM in full debug mode detected that a block has been modified after being freed - now TSQLRestServerNamedPipeResponse is fully stand-alone
file: [9cd42f8e10] check-in: [e343ec80ea] user: ab branch: trunk, size: 546603
2011-01-12
17:09
new SortCompareOperator() functions and associated TSortOperator type file: [c507fac559] check-in: [ba3dd70c7e] user: ab branch: trunk, size: 545504
2011-01-10
16:30
introducing new TSynBigTableMetaData class file: [20ed2faa31] check-in: [5f75d360a2] user: G018869 branch: trunk, size: 545508
2011-01-09
18:16
some comments update file: [bb62ee24ce] check-in: [8d54b45378] user: ab branch: trunk, size: 545416
2011-01-02
17:07
TSQLRestServer.JSONEncodeResult now can encode multiple parameters as a JSON array file: [0a3ce9d1bc] check-in: [8ecdf549b1] user: ab branch: trunk, size: 545418
16:51
TSynTable first finished draft file: [0d6bf38357] check-in: [e93f01713e] user: ab branch: trunk, size: 545001
2010-12-30
10:05
New TSynTable, TSynTableFieldProperties and TSynTableStatement classes to handle a generic database table storing field values using our SBFcompact binary format (more compact than BSON, similar to Protocol Buffers) file: [b740593e9b] check-in: [70b3baf393] user: ab branch: trunk, size: 544987
2010-12-24
09:18
  • code refactoring in TSynBigTableString: some generic functions were moved into SynCommons
  • get rid of the Open/Read/Seek methods: use GetAsStream() instead
  • faster GetIterating() method, looping in physical order in disk by default, and optionaly in Numerical ID order
  • enhanced coherency checks when loading from file
file: [729ec7235a] check-in: [74b05c197b] user: ab branch: trunk, size: 553605
2010-12-23
17:11
integrating Big Table into our SQLite3 framework file: [bad1d100ef] check-in: [d42df4d80c] user: G018869 branch: trunk, size: 553563
2010-12-19
18:07
  • now handle our 32/64-bit variable-length integer, via new FromVarUInt32/64 and ToVarUInt32/64 functions * first draft of new SynBigTable format, much faster and using less disk space
file: [6291ec57c2] check-in: [7c72527a02] user: ab branch: trunk, size: 551200
2010-12-18
13:27
Try to fix Delphi XE imcompatilibility with named pipe security file: [7e11f1dfc4] check-in: [a1a85a315c] user: ab branch: trunk, size: 550148
2010-12-17
16:03
  • Some speed improvements in JSON parsing and conversion to SQL;
  • There was a problem in the sqlite3_bind_text() official documentation: the SQLite site says that the Text_bytes parameter includes the #0 terminator, but in fact, it excludes it. So a #0 was added to the field content on the database, resulting in an error.
file: [200ebb24e9] check-in: [54a20ced13] user: G018869 branch: trunk, size: 549424
10:48
new function sqlite3_value_numeric_type + speed improvements + 100% tests passed after inlined params integration file: [c25a6b9177] check-in: [e1492ec886] user: G018869 branch: trunk, size: 546345
2010-12-16
18:38
also inline parameters for Update and Add records, in order to use prepared statements file: [aa6929696f] check-in: [6eab25221e] user: G018869 branch: trunk, size: 546458
17:58
  • fixed sqlite3_result_text() implementation
  • added sqlite3_aggregate_context() and sqlite3InternalFree() functions
  • new CONCAT() function available in SQL statements to process fast string concatenation
  • now handle automaticaly prepared SQL statements: the parameters must be surrounded with :(...): in order to use an internal pool of prepared TSQLRequest; example of possible inlined values are :(1234): :(12.34): :(12E-34): :("text"): or :('text'): (with double quoting inside the text, just like any SQL statement)
file: [7423f9e4c0] check-in: [6a8c47527d] user: G018869 branch: trunk, size: 546326
2010-12-13
17:00
new TSQLRecordFill class, used internally by TSQLRecord.FillPrepare() to save memory: a TSQLRecord instance has now only 20 bytes of InstanceSize file: [0d5f589749] check-in: [705685b679] user: G018869 branch: trunk, size: 543242
15:44
update SQLite3 engine to version 3.7.4 file: [d7fa0154ab] check-in: [e361c5f996] user: G018869 branch: trunk, size: 542252
15:38
new TSQLRecordProperties class, used internaly by TSQLRecord to access to the RTTI via some high-level structures (therefore save memory for each TSQLRecord instance, and make operations faster) file: [3b86c2b5c6] check-in: [945e892c1c] user: G018869 branch: trunk, size: 542206
2010-12-12
18:48
big code refactoring, using a cache for most RTTI properties attributes - warning: this code won't compile yet file: [d814816a1a] check-in: [9dfc91fcd3] user: ab branch: trunk, size: 540641
2010-12-06
16:06
updated UTF-8 uppercase handling, IdemPChar() is now explicitely only 7 bit ASCII oriented (don't handle accentuated characters) - a new IdemPCharU() function is now available file: [302eba0528] check-in: [d4cd66ac72] user: G018869 branch: trunk, size: 535977
2010-12-05
18:02
Some WinAnsi/UTF-8 and NormToUpper[] fixes (introduced new NormToUpperAnsi7[]) file: [21e8de42c6] check-in: [504f6a3df6] user: ab branch: trunk, size: 536015
12:37
new IsWow64 and SystemInfo global variables file: [ab0fe580d7] check-in: [1a67c40ae5] user: ab branch: trunk, size: 535761
09:43
TSQLRecord.ID reader has now a GetID() getter which can handle the fact that a published property declared as TSQLRecord (sftID type) contains not a true TSQLRecord instance, but the ID of this record: you can use aProperty.ID method in order to get the idea - but prefered method is to typecast it via PtrInt(aProperty), because GetID() relies on some low-level windows memory mapping trick
file: [40a406bd9a] check-in: [681390fb19] user: ab branch: trunk, size: 536092
2010-12-03
14:30
new TSQLRecordMany.DestGetJoinedTable method, which gives access to the joined fields of the pivot table, via a TSQLRecordManyJoinKind = (jkDestID, jkPivotID, jkDestFields, jkPivotFields, jkPivotAndDestFields) parameter file: [9d1612532a] check-in: [0b79a556b0] user: G018869 branch: trunk, size: 534182
13:38
  • better non-ascii search handling in TSQLTable.SearchValue
  • new TSQLRecordMany.DestGetJoined() method returning a Dest TSQLRecord, ready to retrieve all joined records (i.e. FillPrepare having been called)
file: [eb57d99d2a] check-in: [aa35485c88] user: G018869 branch: trunk, size: 532698
09:18
TSQLRecordMany now uses TSQLRecord properties, and not TRecordReference any more file: [ed3c793e4c] check-in: [bbf864891f] user: G018869 branch: trunk, size: 530883
2010-12-02
15:56
  • new TSQLRecord.FillPrepare(const aIDs: TIntegerDynArray) overloaded method, which can be handy to loop into some records via an IDs set
  • new TSQLRecordMany.DestGetJoined method, in order to retrieve all Dest items IDs associated to the current or specified Source ID, adding a WHERE condition against the Dest rows
file: [30225823cb] check-in: [cfe40c7362] user: G018869 branch: trunk, size: 531938
13:06
added optional aAndWhereSQL parameter to TSQLRecordMany.FillMany file: [afd853e344] check-in: [1f50972f29] user: G018869 branch: trunk, size: 527562
08:44
  • new TSQLRecord.FillClose method
  • new TSQLRecord.CreateAndFillPrepare() methods, to makes loop into records easier (an hidden TSQLTable is created and released by TSQLRecord.Destroy)
  • new TSQLTable.OwnerMustFree property for generic owning of a TSQLTable by a record - used for both CreateAndFillPrepare and TSQLRecordMany.FillMany
file: [daa2dc3838] check-in: [27fe411963] user: G018869 branch: trunk, size: 527272
2010-12-01
13:27
source code modified to be 7 bit Ansi (so will work with all encodings) file: [6a94749b02] check-in: [cf001067c7] user: G018869 branch: trunk, size: 524589
07:51
enhancements to TSQLRecordMany - see http://synopse.info/forum/viewtopic.php?pid=833#p833 file: [2e07bd5ac5] check-in: [a875df5583] user: G018869 branch: trunk, size: 523501
2010-11-30
16:18
included fork of ZEOS library, using RawUTF8 as internal string type - draft version file: [04d448057e] check-in: [7810952a31] user: G018869 branch: trunk, size: 519512
2010-11-28
15:36
  • added sqlite3_result_error() call to make wrong parameter count error explicit during SQL statement internal functions calls
  • handles new FTS4 extension module - see http://sqlite.org/fts3.html#section_1_1 - which is available since 3.7.4
  • new RANK() function available in SQL statements for ranking FTS3/FTS4 with best performance (used by the new TSQLRest.FTSMatch() overloaded method) - see http://www.sqlite.org/fts3.html#appendix_a
  • new class function TSQLRecord.SimpleFieldsCount
  • FTS3Match method renamed FTSMatch, in order to be used without hesitation for both FTS3 and FTS4 classes
  • new overloaded FTSMatch method, accepting ranking of MATCH, using the new RANK internal function - see http://www.sqlite.org/draft/fts3.html#appendix_a
  • new TSQLRecordFTS4 class, to handle new FTS4 extension module - see http://sqlite.org/fts3.html#section_1_1 - which is available since 3.7.4
file: [bb579e2211] check-in: [a6e4138561] user: ab branch: trunk, size: 527990
2010-11-26
16:49
Updated SynProject to handle column size in \TableBugFixes and such file: [d73895c71c] check-in: [496ca1df62] user: G018869 branch: trunk, size: 523564
2010-11-17
15:34
documentation/comments update file: [08b174e890] check-in: [0e8fd08f4d] user: G018869 branch: trunk, size: 523822
15:22
some fixes in comments and in TSQLRecord.SimplePropertiesFill file: [95bf4d78cf] check-in: [5331bdc728] user: G018869 branch: trunk, size: 522277
15:06
  • new TSQLRecord.SimplePropertiesFill() method, to fill the simple properties with a given list of const parameters, following the declared order of published properties of the supplied table
  • new TSQLRest.Update(aTable: TSQLRecordClass; aID: integer; const aSimpleFields: array of const) overloaded method to update a record from a supplied list of const parameters
file: [de64c266d9] check-in: [9a9eed3a0d] user: G018869 branch: trunk, size: 521956
14:50
  • sftMany/TSQLRecordMany field type handled as a not simple field
  • new TSQLRest.Add(aTable: TSQLRecordClass; const aSimpleFields: array of const) method to add a record from a supplied list of const parameters, following the declared order of published properties of the supplied table
file: [68683a5b3d] check-in: [68af8eb0c6] user: G018869 branch: trunk, size: 519725
2010-11-09
07:26
  • TSQLRecord.FillRow method has been made virtual, so that some calculated field can be initialize during table content enumeration
  • corrected possible GPF error in TSQLRestServer.Retrieve
file: [266ac5bc62] check-in: [4d8875a2a0] user: G018869 branch: trunk, size: 517365
2010-11-02
08:11
fixed GPF error in TSQLRestServerDB.CreateMissingTables when a table exists, and a TSQLRecordMany field is added to this table file: [00afbb7daa] check-in: [e5aad1e03c] user: G018869 branch: trunk, size: 516982
2010-10-29
12:12
  • renamed TSQLRecordMany.DestAdd into TSQLRecordMany.ManyAdd
  • new TSQLRecordMany.ManySelect and ManyDelete methods
  • fixed some issues when TSQLRecordMany.FillMany is used together with standard FillPrepare (e.g. in a TSQLRest.Retrieve method)
  • unitary testing enhanced for the new methods
file: [477cfbb31b] check-in: [7f7ca82dbf] user: G018869 branch: trunk, size: 516923
08:34
  • TSQLRestServer.AfterDeleteForceCoherency now handles specifically TRecordReference, TSQLRecord (fixed) and new 'has many' Source/Dest fields (this is our internal "FOREIGN KEY" implementation - we choose not to rely on the database engine for that, in order to be engine-independent... and SQLite3 introduced FOREIGN KEY in 3.6.19 version only)
  • TSQLRestServer.AfterDeleteForceCoherency now synchronizes as expected TSQLRestServerStatic table content
  • new TSQLRestServerStatic.SearchField method, for fast retrieval of all IDs matching a field of a TSQLRestServerStatic table (faster than using any OneFieldValues method, which creates a temporary JSON content)
file: [769b465c13] check-in: [63acecb6d5] user: G018869 branch: trunk, size: 514605
2010-10-28
16:03
  • now handles User Defined Functions, via sqlite3_create_function_v2 and corresponding sqlite3_result_* functions: as sample, the MOD() function is defined in any database opened via TSQLDataBase (it was needed to have compatibility with Oracle/MySQL/MSSQL/PostGreSQL engines for our TSQLRecordMany implementation)
  • protect the TSQLDatabase methods called when self is nil, which could occur if the database is not yet initialized (could occur if only a TSQLRestServerStatic exists, like in TTestSQLite3Engine._TSQLRestClientDB)
  • new TSQLRecordMany to handle "has many" and "has many through" relationships
file: [7674eaf286] check-in: [d9f6c60c40] user: G018869 branch: trunk, size: 509369
2010-10-18
13:52
SQLite3 framework upgraded to version 1.10 file: [bd29a21686] check-in: [2e2c41ae4c] user: G018869 branch: trunk, size: 497665
2010-09-20
18:57
Synopse Big Table:
  • Range Checking forced OFF to avoid problems with some projects
  • fFile type modified to THandle, instead of integer
file: [518a6f1729] check-in: [adb136d8e0] user: ab branch: trunk, size: 497113
2010-09-17
17:43
small fixes in the SQLite3 framework file: [1cb1d503cf] check-in: [b65a0aaf27] user: ab branch: trunk, size: 496922
2010-09-11
16:57
  • WriteObject and CopyObject functions now handle Int64 properties, as TJSONWriter.WriteObject method does now also
  • new TSQLRestServerStatic.GetOne and TSQLRestServerStatic.UpdateOne methods, methods available since a TSQLRestServerStatic instance may be created stand-alone, i.e. without any associated Model/TSQLRestServer
  • diverse fixes in TSQLRestServerStatic which could occur in not expected behavior if security events are enabled for this table (wrong IDToIndex)
  • new TSQLRecordLog.CreateFrom method used to append some log records to an existing JSON log content
file: [3bd459e301] check-in: [21e2c6dd5b] user: ab branch: trunk, size: 496854
2010-09-01
21:31
small fixes in the report manager and creation from RTTI + improved comments and some modification to avoid any GPF file: [4f575a5f94] check-in: [17264e2747] user: ab branch: trunk, size: 488949
2010-08-24
10:51
Framework updated in version 1.9.1:we had to update the SQLite3 internal engine to version 3.7.2: an obscure but very old bug makes SQLite authors recommend to use 3.7.2 for all new development. Upgrading from all prior SQLite versions is also recommended. So we do. And increase our version number. file: [14179d75b7] check-in: [33aa8e875b] user: ab branch: trunk, size: 488474
09:07
fix in displaying record reference in UI Virtual Grid file: [00f760bff8] check-in: [20bed74484] user: ab branch: trunk, size: 488246
08:56
fix small issue in TTimeLog display in virtual grids (if Iso8601=0) file: [7576e5d5bb] check-in: [afb1971e70] user: ab branch: trunk, size: 488312
2010-08-23
21:39
SQLite3 Engine updated to official 3.7.1 version file: [8c63d10d38] check-in: [f822e590c3] user: ab branch: trunk, size: 488233
21:13
Delphi 2009/2010 warnings removal file: [f3bc8e4eb6] check-in: [22c6010bfb] user: ab branch: trunk, size: 487554
15:54
  • custom queries can now handle standard operators, following a specified set
  • TSQLQueryEvent() usage has therefore been modified for custom queries
file: [333f57260c] check-in: [f45a02ec72] user: ab branch: trunk, size: 487540
15:05
  • handle now RowID as a valid alias to the ID field (needed for TSQLRecordFTS3)
  • handle TSQLRecordFTS3 record, for using FTS3 virtual tables natively inside the Framework, i.e. easy implementing full-text search (including dedicated regression tests)
file: [f4d79f43c9] check-in: [546b849755] user: ab branch: trunk, size: 486967
2010-08-16
20:35
  • some code rewrite in order to avoid any implicit conversion from/to integer/cardinal after new definition of PtrInt/PtrUInt (matching NativeInt/NativeUInt types, available since Delphi 2007)
  • updated TSQLRibbonTabParameters object, with some new fields dedicated to the automatic edition of records, via the new SQLite3UIEdit unit
  • new sftSet SQL field kind, handling a TSQLRecord published property with a set of enumeration as Delphi type (stored as bit-mapped INTEGER)
file: [942f41dd28] check-in: [2f10b24d6e] user: ab branch: trunk, size: 479900
2010-08-13
18:45
lot of new stuff, especially about User Interface auto creation from RTTI: edition, deletion or export can now be implemented internaly with native methods of the framework file: [2eda07dbe7] check-in: [1c81f20a5b] user: ab branch: trunk, size: 473876
2010-08-11
16:26
better handling of sftID in the User Interface and database use (e.g. creates a dedicated index for the TSQLRecord published fields inside TSQLRecord) file: [d3f2b09132] check-in: [b149edbd1d] user: ab branch: trunk, size: 469730
2010-08-02
17:28
add digital signature to SQLite3 Framework MainDemo file: [2fd658ff5f] check-in: [18a8b7abba] user: ab branch: trunk, size: 467525
2010-07-31
18:16
SQLite3 framework updated for the upcoming MainDemo file: [d18bbf4d49] check-in: [c260d3d0b4] user: ab branch: trunk, size: 467541
2010-07-30
19:12
SQLite3 framework update for new MainDemo sample, including new TSQLRestClientURI.ForceBlobTransfert property and new TSQLRestClientURI.RetrieveBlobFields/UpdateBlobFields methods file: [8c854512ce] check-in: [bb9bdca3a1] user: ab branch: trunk, size: 465802
2010-07-29
19:06
SQLite3 framework user interface update file: [31e8aac3b5] check-in: [cd738b1c9c] user: ab branch: trunk, size: 462675
2010-07-27
20:06
Improve compatibility for Delphi 2009/2010 SQLite3 framework User Interface, and prepare release of main sample demo file: [31a95c4ec5] check-in: [4c5adbef4f] user: ab branch: trunk, size: 460770
2010-07-22
21:04
minor changes about 3.7.0 version comments file: [b055b5e892] check-in: [30507daa84] user: ab branch: trunk, size: 459351
2010-07-20
10:32
test the digital signature of records file: [6033177d71] check-in: [6623d06a58] user: ab branch: trunk, size: 459390
2010-07-19
09:12
fixed memory leak in TSQLRest file: [aa7fee3c69] check-in: [2af3db2230] user: ab branch: trunk, size: 458841
2010-07-18
16:53
issue fixed with url parameters decoding file: [0f7a2efb0e] check-in: [e79ccf8674] user: ab branch: trunk, size: 458841
15:17
Client-Server framework allows now remote access to any Server-Side method, like DataSnap (see TSQLRestServerCallBack) + new functions related to this new feature, e.g. JSONEncode/Decode or enhanced URLDecode/URLEncode file: [f6950caba0] check-in: [f7822afcf1] user: ab branch: trunk, size: 458792
2010-07-16
15:57
small fixes in SQLite3 concerning SameTextU() rewritten function file: [be5f935917] check-in: [eb57faad66] user: ab branch: trunk, size: 462150
2010-07-14
16:23
SynPdf.pas in version 1.8.3 file: [11873323e6] check-in: [4ad453c755] user: ab branch: trunk, size: 462136
2010-07-12
18:45
minor fixs in order to validate associated documentation (after PasDoc parsing) file: [7ef7bcdf3f] check-in: [50dd7f43c8] user: ab branch: trunk, size: 462031
08:56
comments update in SQLite3/SQLite3Commons.pas, about static tables file: [4ead377089] check-in: [19a36a7c05] user: ab branch: trunk, size: 461792
2010-07-06
18:46
fixed issue in TSQLTable.DeleteRow file: [51d3097ae2] check-in: [210e7c9866] user: ab branch: trunk, size: 461105
12:59
TSQLRestServerStatic.EngineList now handle "SELECT Count(*) FROM TableName;" SQL statement file: [790700596d] check-in: [8a55ac7f46] user: ab branch: trunk, size: 461014
12:28
new TSQLRest.TableRowCount method and some modifications to report black&white and duplex handling file: [0d0bd7ac3c] check-in: [b540a2e0f4] user: ab branch: trunk, size: 460714
2010-07-05
16:33
bug fixed in RetrieveBlob/UpdateBlob methods and corresponding unitary tests addition file: [f7fecaca40] check-in: [6523800bcc] user: ab branch: trunk, size: 460078
2010-07-04
15:21
new function FileAgeToDateTime file: [5bc47b4d04] check-in: [3661eb39f4] user: ab branch: trunk, size: 460044
2010-07-03
18:54
minor update (LVCL, comments) file: [fb5bb3e0fa] check-in: [1da7152871] user: ab branch: trunk, size: 460084
15:17
Trial of {$ifdef ANONYMOUSNAMEDPIPE} for anonymous named pipes: make no difference under Windows Vista/Seven -> undefined file: [d92ba434c6] check-in: [06168dc306] user: ab branch: trunk, size: 460196
2010-07-02
22:55
fixed issue in IdemPropName(... P2: PRawUTF8) function file: [01be52fa6f] check-in: [2332a344e0] user: ab branch: trunk, size: 456086
17:19
  • new direct methods to handle BLOB fields from clients or servers
  • new URI to GET or PUT BLOB fields: ModelRoot/TableName/ID/BlobFieldName
file: [646bfc70b0] check-in: [0375ad50a7] user: ab branch: trunk, size: 455976
07:51
additional comments in TSQLRestServer.NoAJAXJSON property - see http://synopse.info/forum/viewtopic.php?pid=98#p98 file: [fa8ac50454] check-in: [1a9b9a81dc] user: ab branch: trunk, size: 438543
2010-06-27
12:59
Delphi 2009/2010 compatibility fix + new unitary testing class file: [e845270fa0] check-in: [ac9d2a3f95] user: ab branch: trunk, size: 437184
06:56
  • update engine to version 3.7 latest draft (snapshot as of 2010-06-26 19:03 UTC)
  • sqlite3.c: #define SQLITE_THREADSAFE 2 is better than 0 which could be usafe
file: [8fd5b8ff9c] check-in: [79dd7368a2] user: ab branch: trunk, size: 437545
2010-06-25
13:48
  • update engine to version 3.7 draft (snapshot as of 2010-06-25 11:35 UTC)
  • SetWALMode() method for enabling Write-Ahead Logging for the database
  • the RTREE extension is now compiled by default into the engine
    See http://synopse.info/forum/viewtopic.php?id=31
file: [3cbc09816c] check-in: [eb3d0c0674] user: ab branch: trunk, size: 437548
2010-06-23
14:04
Added: Initial Check-In of all Synopse components file: [35db9add28] check-in: [9226a861e3] user: User branch: trunk, size: 437468