mORMot and Open Source friends
File History
Not logged in

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

History of files named SynCommons.pas

2014-07-28
16:41
[818b8c2dd9d7b1f5] part of check-in [50208921410a] now SynCommons unit compiles with Kylix - but not tested, and exception interception for logging and stack trace are disabled (user: User branch: trunk)
08:53
[566efd6c317f410f] part of check-in [02f3aac603] added AntonE code generator third party sample (user: User branch: trunk)
2014-07-18
11:12
[833ccd4529cb12e2] part of check-in [da68b56f61] TSynAnsiFixedWidth.Create(CODEPAGE_US) will now use a hard-coded table, since some Russian system do tweak the registry to force 1252 page maps 1251 - see http://synopse.info/forum/viewtopic.php?pid=11488#p11488 (user: User branch: trunk)
2014-07-17
16:54
[7fc45278f6100622] part of check-in [27759a1e19] ensure file size of 0 byte in TMemoryMap.Map() does not trigger an ESynException error (user: User branch: trunk)
16:49
[dfac73183899ee9f] part of check-in [769e95b167] allow file size of 0 byte in TMemoryMap.Map() - proposal by mpv (user: User branch: trunk)
2014-07-16
08:40
[7d342665f2404a4a] part of check-in [e1cdeac3fe] added GlobalLock/GlobalUnlock functions, used e.g. for ticket [ea4e8bd544] (user: User branch: trunk)
2014-07-14
14:16
[ca4e3e1a409d48ba] part of check-in [5f336cc5a1] recognize 8.1 and upcoming "Threshold" 9 in TWindowsVersion (user: User branch: trunk)
2014-07-13
18:00
[0c555220757e6cbe] part of check-in [5ec16cacc1] fix unexpected potential GPF issue in TTextWriter.WriteObject() - can be triggered e.g. when an Exception is logged (user: User branch: trunk)
2014-07-11
09:58
[71586a9e7b9ffafe] part of check-in [87319e7086] fixed LVCL compilation issues (user: User branch: trunk)
2014-07-07
13:14
[819ef08ec39447c3] part of check-in [187058910f] fixed memory leak when RecordLoadJSON() is executed directly without any previous RecordSaveJSON() under Delphi 2010 and up (user: User branch: trunk)
2014-07-06
11:30
[acf54fbaac0b6738] part of check-in [44f307ce83] recognize latest stable versions of FPC compiler (user: User branch: trunk)
2014-07-04
10:31
[12211eceffa5e42e] part of check-in [47805bc15e] added aDocVariant.Value(aName) and aDocVariant._(aName) pseudo methods, to be used with late-binding of method names which can't be written inline - e.g. {data:{"1000":"D1"}} (user: User branch: trunk)
09:47
[5ba685be6fe98745] part of check-in [1968310b19] added function AnyTextFileToRawUTF8() (user: User branch: trunk)
2014-06-27
17:27
[c7388d3a1bfbb3d1] part of check-in [ef9b16148b] TTextWriter.AddJSONEscape/AddJSONEscapeW/AddHtmlEscape methods speed up for not-to-be-escaped text (which is the most common) (user: User branch: trunk)
2014-06-25
20:22
[b98114355b1a47f1] part of check-in [15968dbd9c] TSynLogFamily.StackTraceUse is now set to stOnlyAPI within the Delphi IDE to avoid unexpected and annoying AV errors during debugging (user: User branch: trunk)
09:30
[f9054f955b2a0dfe] part of check-in [893fc111d1] QuotedStrJSON() function speed-up (user: User branch: trunk)
2014-06-24
14:23
[8c0ac743c26caa89] part of check-in [7c3529beb3] added QuotedStrJSON() function and fixed FormatUTF8() to produce valid escaped JSON string when JSONFormat optional parameter is TRUE (user: User branch: trunk)
2014-06-22
07:48
[e59bf9e6e22aa9c2] part of check-in [2ccd2e0b6f] fixed several memory leaks under newer versions of Delphi (linked to enhanced RTTI or compiler issues, like unproper method inlining or object type regression) (user: User branch: trunk)
2014-06-21
04:54
[937e8c75765bc780] part of check-in [4e708e600e] added TTextWriter.RegisterCustomJSONSerializerSetOptions() for [da22968223] (user: User branch: trunk)
2014-06-20
20:12
[91e360bac3e7e47f] part of check-in [d3e5ed2ff0] use TSQLRecord high-level ORM process instead of raw JSON data (which may be inconsistent, e.g. for field names, depending on the DB), when checking History BLOB field consistency - for feature request [a78ffe992b] (user: User branch: trunk)
11:40
[c464b3b9725a1eb6] part of check-in [2fef76836f] TSynTableStatement.Create() SQL statement parser will no handle "IS NULL" and "IS NOT NULL" operations in its WHERE clause (user: User branch: trunk)
11:38
[65552589abefab45] part of check-in [9a4a43ec0f] added overloaded QuickSortInteger() for synchronous sort of two integer arrays (user: User branch: trunk)
11:36
[ecc3f48477c4a07f] part of check-in [949559b6c7] added SynLZCompress/SynLZDecompress functions, using crc32c() for hashing (user: User branch: trunk)
2014-06-19
19:56
[a83c08575e4f7df5] part of check-in [76060aee73] added TFileBufferReader.CurrentPosition method (user: User branch: trunk)
19:56
[f50ca41707061ad1] part of check-in [aa879e74e4] added TFileBufferWriter.WriteVarUInt64(Value: QWord) method (user: User branch: trunk)
2014-06-07
20:23
[cb09ec5338b5f2af] part of check-in [d02722ec7c] you can now define any custom property and store it as JSON, e.g. TGUID, by using overriding InternalRegisterCustomProperties() - see ticket [b653e5f4ca] (user: User branch: trunk)
18:56
[7688ce469fee7461] part of check-in [ae6a52be9e] code refactoring of TJSONCustomParserRTTI class, mainly adding CreateFromTypeName() and CreateFromRTTI() means of low-level JSON serialization (user: User branch: trunk)
14:48
[e9c3be7e010c4013] part of check-in [641778b5b4] fixed potential memory leak when JSON serializing of static arrays (user: User branch: trunk)
2014-06-06
20:38
[8cc4e07d178802da] part of check-in [0d3b751e65] added static array of single or complex types support for record JSON serialization using enhanced RTTI (user: User branch: trunk)
11:43
[c02e90831f50db44] part of check-in [927b93657b] added static array support for record JSON serialization using enhanced RTTI (user: User branch: trunk)
2014-06-05
08:55
[a574c45cfc84ad95] part of check-in [7c77968065] fix several Delphi 5 compilation issues (user: User branch: trunk)
08:30
[f651007726484879] part of check-in [ed06417866] circumvent Delphi 6 "Internal error: C3890" compiler limitation - thanks RalfS for pointing out the faulty line (user: User branch: trunk)
2014-05-29
18:57
[3cd5e3edc0cd7482] part of check-in [2321869a75] enhanced FPC compatibility + include regression tests for CrossPlatform units (user: User branch: trunk)
2014-05-28
12:00
[9f8f6256e48a3095] part of check-in [d35f068ba9] avoid huge move() in ReallocMem() for SetRawUTF8() optimized function (user: User branch: trunk)
2014-05-27
06:09
[1f5ddebd5706ed2b] part of check-in [c1a70e143a] fixed CPUID detection for SSE 4.2 instruction set (user: ab branch: trunk)
2014-05-26
18:10
[731687a136dfb468] part of check-in [86687dbdf7] new StrUInt64() and SetRawUTF8() functions (user: User branch: trunk)
15:00
[e9fc110cb0e1212f] part of check-in [22b1cca203] faster x86 asm version of StrInt64() function; more than 4 times faster than SysUtils.IntToStr() implementation for Int64 values under Win32 platform (user: User branch: trunk)
12:11
[fff1c8c6100ec472] part of check-in [ac6efcf191] fast x64 asm version of StrUInt*() and StrInt*() functions - much faster than the RTL version of IntToStr() (user: User branch: trunk)
11:29
[b3e5185d67b7e5b0] part of check-in [fa14637f81] faster x86 asm version of StrUInt32() and StrInt32() functions (user: User branch: trunk)
08:56
[e8d4c512536f3cd5] part of check-in [99133dbb2a] added fnv32() function, slower than kr32, but with less collisions (user: User branch: trunk)
07:47
[bb269c7250617296] part of check-in [10aaa3da08] introduced StrLenPas() function, to be used when buffer is protected and SSE2 StrLen() function may raise an error by reading some chars after the buffer itself (it won't occur with normal stack-allocated or GetMem-allocated buffers, but may happen e.g. when working on memory mapped files) (user: User branch: trunk)
07:00
[7db44a0918a77288] part of check-in [518822d716] enhanced doc about ReadStringFromStream() (user: User branch: trunk)
2014-05-25
15:06
[48217ab1d32a4b29] part of check-in [c34f986ba4] small code refactoring of x64 SSE 4.2 function crc32csse42() (user: User branch: trunk)
14:36
[eff0e75d31f92a69] part of check-in [1e69f1f38e] added 64 bit version of function crc32csse42() - a Win64 Delphi executable now performs its hashing at 3.7 GB/s, when SSE 4.2 is available (user: User branch: trunk)
14:09
[e6535efc4d2f7ad6] part of check-in [53b574df03] small speed enhancement of crc32csse42() function: now speed is 3.7 GB/s instead of 3.5 GB/s (user: User branch: trunk)
12:22
[7055adb51d29c5b4] part of check-in [8fe7cc53b7] added crc32c() function using either optimized unrolled version, or SSE 4.2 instruction: naive rolled crc32c is 325 MB/s, unrolled/asm crc32cfast() is 1.7 GB/s, crc32csse42() is 3.5 GB/s - it is now used as default hashing function (i.e. DefaultHasher global variable) (user: User branch: trunk)
2014-05-24
14:13
[5b73c793861ea530] part of check-in [840adacf7c] StrLen() function will now use faster SSE2 instructions on supported CPUs (user: User branch: trunk)
09:36
[532733862cd140aa] part of check-in [447234b233] added Iso8601CheckAndDecode() function (user: User branch: trunk)
08:11
[c32a52072d035ba8] part of check-in [8f8c9a3c42] enhanced MongoDB and record JSON serialization blob support (user: User branch: trunk)
2014-05-22
13:46
[68f61c514e0202fc] part of check-in [f91e2ffe15] enhanced logged information about THTTPServer classes (user: User branch: trunk)
13:42
[332cc912d755d93b] part of check-in [e11fb05db4] added MaxAlphaCount, MaxDigitCount, MaxPunctCount, MaxLowerCount and MaxUpperCount properties to TSynValidateText class (user: User branch: trunk)
13:37
[b84d7b098f5e7c87] part of check-in [35bcbd5c86] added EnsureDirectoryExists() function (user: User branch: trunk)
2014-05-20
10:12
[ca98bbfe8f764c91] part of check-in [89776b5556] added ForceUTF8 optional parameter to AnyTextFileToString() and AnyTextFileToSynUnicode() functions (user: User branch: trunk)
2014-05-19
13:12
[d3b2eb5f195ff10d] part of check-in [cef3bdd71d] faster process of huge dynamic array unserialization from JSON + several fixes related to JSON serialization (user: User branch: trunk)
08:41
[3796eb90e269a65c] part of check-in [05b5db827a] fixed ticket [c8a8c71b12] allowing decoding of URI computed by browsers, even if they do not follow the RFC 3986 specifications (user: User branch: trunk)
2014-05-18
18:25
[ce2e605291023e25] part of check-in [010f6771d7] ensure we speak about "Windows Messages" instead of the non-sense "GDI Messages" term (user: User branch: trunk)
2014-05-16
19:38
[7f47407c97d4a055] part of check-in [3199d83b6b] some other fixes (end of the previous commit) (user: User branch: trunk)
19:37
[6d69423ceb0ea74b] part of check-in [21eea6cd7c] several fixes and optimizations to JSON parsing / serialization and TDocVariant process (user: User branch: trunk)
19:35
[dbf1c3861fdc3f84] part of check-in [7b960654ae] faster GetNextItemDouble() function (user: User branch: trunk)
19:34
[7cf1cc644357fd74] part of check-in [3914ce5b04] enhanced TSynLog process, to be able to easily write statistics about number of occurences per second, and/or top memory used (user: User branch: trunk)
19:32
[04a0c5a70586e221] part of check-in [b9885ef5f1] added overloaded FindRawUTF8() function, which can be used for identifiers (user: User branch: trunk)
19:31
[ab158e301fd54a91] part of check-in [2eb207fcfe] added IdemPCharWithoutWhiteSpace() function (user: User branch: trunk)
2014-05-15
14:04
[c90c4ee263e2889a] part of check-in [976a824618] for Delphi 2010 and up, RecordSaveJSON/RecordLoadJSON and Dynamic Arrays will use enhanced RTTI for JSON serialization: no need to call TextWriter.RegisterCustomJSONSerializerFromText() and maintain text-based serialization on newer versions of Delphi :) (user: User branch: trunk)
2014-05-13
16:17
[5e671fd7aa7422e0] part of check-in [e4267ce7b6] several fixes for MongoDB / ORM process (mainly about indexes), and enhanced logging by all means (user: User branch: trunk)
11:08
[ca5eae45b02a05a1] part of check-in [a35d8737d5] added TSQLTable.ToDocVariant() and TSQLRest.RetrieveDocVariantArray() overloaded methods, which can be used e.g. to process directly some data retrieved from the ORM with TSynMustache.Render() (user: User branch: trunk)
09:48
[69705d23430c7adc] part of check-in [be801769bb] added TDocVariantData.InitObjectFromVariants() method (user: User branch: trunk)
09:47
[2838f3259fab159e] part of check-in [f5339388d3] fixed VarRecToVariant() when handling a variant argument (user: User branch: trunk)
07:08
[4a8e18077184dedb] part of check-in [99881f67cb] added VariantDynArrayClear() function (faster e.g. for array of TDocVariant) (user: User branch: trunk)
06:15
[b1ff3b2bd20d5478] part of check-in [bb7df90946] fixed an issue in record de-serialization of Currency type (user: User branch: trunk)
2014-05-12
18:31
[2b2777f12b1fbf32] part of check-in [73352e575d] now TSQLTable.GetVariant() will handle text as RawUTF8 (as any other variant generated by the framework), and process all supported TSQLFieldType, including e.g. sftVariant and sftObject as TDocVariant if needed (user: User branch: trunk)
16:34
[497bd3d687084c97] part of check-in [9418305db2] added overloaded function AnyAnsiToUTF8() (user: User branch: trunk)
07:43
[8682a18a15b7c41e] part of check-in [fd20a67fc6] fixed typos and some compilation warnings (user: User branch: trunk)
2014-05-11
16:14
[9b48cb7d7ff0cb1e] part of check-in [a077950bca] fixed SynMustache logic - for instance inverted sections did not work as expected - now the code is much easier to follow and maintain (thanks Titou for the report) (user: User branch: trunk)
14:39
[0816f948fe2a7700] part of check-in [d77e330fdd] TSQLRestStorageInMemory will now handle SELECT * FROM .... WHERE ID IN (...) kind of statement (user: User branch: trunk)
11:49
[752cc12d65e129b6] part of check-in [15206e6699] fixed some typo (user: User branch: trunk)
2014-05-10
15:28
[f098090f07c9840a] part of check-in [c8931064d1] updated documentation (user: User branch: trunk)
14:44
[b2da922dc98db3a7] part of check-in [11083b4a7b] FormatUTF8() and VarRecToUTF8() will now append the class name of any TObject instance supplied as parameter (user: User branch: trunk)
12:49
[5e21d450752aa18d] part of check-in [d2aaf10a69] added TSQLRest.UpdateField() overloaded methods to update a single field in a record (user: User branch: trunk)
12:13
[863740a2b427a5e7] part of check-in [edf769fde4] added VariantToInlineValue() and VarRecToInlineValue() functions (user: User branch: trunk)
11:21
[0b0a55d2ca5a2362] part of check-in [790f35c9f2] TSQLRecord.[CreateAnd]FillPrepare() will now handle aCustomFieldsCSV='*' parameter as a all fields selection, including BLOBs (whereas default '' value will continue to return simple fields, excluding BLOBs) (user: User branch: trunk)
2014-05-08
16:49
[c47723f7bc7b25f2] part of check-in [af2f4b2516] fixed logging of sllLastError text message not appearing in the logs (user: User branch: trunk)
13:44
[734b6e3a4980b1c6] part of check-in [1fff7548df] fixed several compilation issues with LVCL (user: User branch: trunk)
08:20
[5a2e6d8af71f326c] part of check-in [9da5910e5c] fixed StrInt64() for minimum Int64 value of -9223372036854775808 (user: User branch: trunk)
2014-05-06
20:09
[995b3ddc51aca590] part of check-in [58306122ea] added TDocVariant Clear pseudo-method (convenient in a loop, for populating documents content) (user: User branch: trunk)
11:40
[2f2b59dcf904c68b] part of check-in [742fc17c06] fixed unexpected issue in TTextWriter.AddDateTime() when DateTime=0 (user: User branch: trunk)
07:31
[570021f405b30e15] part of check-in [6c4beaaebc] added some explicit comments about the fact that the JSON parser modifies the input buffer in-place, for better speed (user: User branch: trunk)
2014-05-05
17:04
[d8cc2d98e9e8b381] part of check-in [56aa7bca72] fixed unexpected x64 Delphi compiler odd behavior with variant parameters (user: User branch: trunk)
14:17
[ab81f667809abf65] part of check-in [1cd33897f6] added TSynTestCase.NotifyTestSpeed() method (user: User branch: trunk)
12:47
[b8b9642de3e21530] part of check-in [d6e606004d] added TDocVariantData.GetVarData() method (user: User branch: trunk)
10:19
[d6df5a1bf5579abc] part of check-in [274b428a44] handle Delete for MongoDB's ORM process, and also handle simple "IN" statement in WHERE clause (user: User branch: trunk)
2014-05-03
15:58
[8baecc1990b46d22] part of check-in [498e8cf065] starting MongoDB integration to the ORM - now you can insert and retrieve TSQLRecord instances, including complex published properties types (e.g. variant or dynamic arrays) from a MongoDB server - not finished yet (still deletion/update and stand-alone BLOB process to take place) (user: User branch: trunk)
12:39
[3d649388c09bcbf7] part of check-in [a4fd7c934e] fixed unexpected issue when parsing JSON content with text-defined record serialization routines - e.g. for an array of RawUTF8 field (user: User branch: trunk)
2014-05-02
12:10
[65f836401c46fc3e] part of check-in [a1e49973b6] fixed some missing CRLF end of lines (user: User branch: trunk)
12:08
[3f62fb1ff7635d95] part of check-in [cdd92b020a] added TTextWriter.RegisterCustomJSONSerializerFromTextSimpleType() method to handle e.g. enumerate types as JSON String in custom JSON serialization of records (user: User branch: trunk)
11:34
[0ecd7e85ec36213d] part of check-in [06a5f73e02] added GetEnumNameValue() function (user: User branch: trunk)
2014-05-01
18:21
[55a0da2c65170177] part of check-in [11f646182a] forgot to remove a comment about a deprecated "ToConsole" property in the source code, so it appears in the documentation at a wrong place - now fixed (user: User branch: trunk)
2014-04-30
17:08
[b4a673eb7daf4c01] part of check-in [0dde876d96] fixed FormatUTF8('?...',[],[aVariant],true) to escape any supplied variant value as expected by the JSON standard (user: User branch: trunk)
2014-04-29
08:49
[821aba0396f02bbd] part of check-in [b1b94cb122] fixed regression issue in TJSONObjectDecoder.Decode() which was not able to handle true/false JSON values as 1/0 (user: User branch: trunk)
2014-04-26
14:33
[0326addaeac4a5a7] part of check-in [c3effdb5a0] added {{mustache}} template support for mORMot - high speed pure Delphi logic-less template system, with unique extensions - see feature request [bd94c11ab1] about implementing straight MVC model (like RoR) in mORMot, for the exact purpose of serving WEB content (user: User branch: trunk)
2014-04-22
13:38
[b7a4dd2f7a2bbf20] part of check-in [8d5a2ccf91] added TRawUTF8ListHashedLocked class (based on TRawUTF8ListHashed) (user: User branch: trunk)
13:37
[d1733501ceeb013d] part of check-in [c4e7149bab] small speed enhancement in procedure GetVariantFromJSON() (user: User branch: trunk)
13:36
[ca289116f5a795b6] part of check-in [2c2cee2e3d] added TTextWriter.AddHtmlEscape() method (user: User branch: trunk)
12:03
[a88bb825287b2cc0] part of check-in [752b4b12f9] RawJSON type is now defined in SynCommons.pas, and will be handled by record text-defined custom JSON serialization as expected (i.e. as un-serialized raw JSON content) (user: User branch: trunk)
2014-04-18
12:27
[2575187d2a838169] part of check-in [8e4840ca83] fixed several Delphi 6 compilation issues (user: User branch: trunk)
2014-04-17
19:01
[8b3e7b57e2604a2b] part of check-in [425a824388] Delphi XE6 support (not fully tested yet since we can't afford to pay the license as unpaid Open Sourcers) - feedback is welcome! (user: User branch: trunk)
2014-04-10
14:53
[3c9bf8f48da5fdf0] part of check-in [713fa2148e] fixed ticket [a75c0c6759] about TTextWriter.AddNoJSONEscapeW() (user: User branch: trunk)
2014-04-09
18:55
[4c1e4c10f755e683] part of check-in [6fe2dd5218] introducing TSQLRecord.CreateJoined() and CreateAndFillPrepareJoined() constructors, to auto-initialize and load nested TSQLRecord properties (user: User branch: trunk)
2014-04-08
15:19
[1d8acb449d4d5251] part of check-in [dff5e310c7] added VariantDynArrayToJSON() JSONToVariantDynArray() ValuesToVariantDynArray() functions (user: User branch: trunk)
2014-04-03
19:39
[67f655bdc57d4599] part of check-in [a9498d4ab8] added support of variants which are in fact varByRef of a WideString or UnicodeString (user: User branch: trunk)
2014-04-02
19:42
[b390a2a13d8f6fca] part of check-in [3f1d2194ef] TDocVariantDataKind enumeration renamed to TDocVariantKind, and sdkUndefined, sdkObject, sdkArray renamed to dvUndefined, dvObject, dvArray (user: User branch: trunk)
2014-04-01
20:02
[e586637b2ecad9de] part of check-in [f3fb92e3e1] disabled too optimistic Assert() which was fine for in-house logic tests, but not relevant in production code, especially if any third-party libraries did break the FPU exception mask (user: User branch: trunk)
19:55
[2eaa92abf55265a0] part of check-in [bf17f12d33] added TSynFPUException class to allow per-method customization of the FPU exception mapping: to be used e.g. when mixing code between external libraries and Delphi code (user: User branch: trunk)
18:03
[52029f73a8361ab2] part of check-in [feb3d10bf9]
  • added UTF8AnsiConvert instance, and let TSynAnsiConvert.Engine(0) return the main CurrentAnsiConvert instance
  • StrComp/StrIComp/StrLen() functions will now expect blank pointers, to circumvent type mismatchs when passing PAnsiChar or PUTF8Char buffers
  • added GetLastCSVItem() function and dedicated HashPointer() function
  • added TRawUTF8MethodList class (based on TRawUTF8ListHashed)
(user: User branch: trunk)
2014-03-31
07:33
[533970387ef4f55e] part of check-in [58d6fdcc44] added TTimeLogBits.FromUnixTime/FromUnixMSTime/ToUnixTime/ToUnixMSTime methods (user: User branch: trunk)
2014-03-30
13:31
[983f95531365bec1] part of check-in [c05f0fa20a] enhanced TTimeLogBits for enhanced speed, and silent failure when value is invalid (user: User branch: trunk)
13:29
[cf53d1ad8d6712ab] part of check-in [3fb51d5104] fixed Delphi 5 compilation issue (user: User branch: trunk)
12:32
[847ad92942b59305] part of check-in [d54556a7d1] fixed unexpected GPF issue in optimized RecordClear() asm, e.g. with records without nested reference-counted fields (user: User branch: trunk)
2014-03-29
16:44
[2dfeed109ceecffc] part of check-in [e425235fbb] fixed record Serialization of records that contain multiple dynamic arrays (user: User branch: trunk)
15:23
[f4c86b334a2e7e7f] part of check-in [cbb76728ec] enabled DispInvoke() function for Delphi XE2 and up (it will also fix the regression issue in the new RTL which let the field names be uppercased) (user: User branch: trunk)
15:18
[0b978fa26d618580] part of check-in [d8e32f6492] added _Copy() and _CopyFast() functions (user: User branch: trunk)
12:10
[8af48af186f9e22c] part of check-in [5e6a52af25] added TDocVariant.NewUnique() method, and let _Unique() and TVarDocData.InitCopy() handle varByRef variants - included corresponding regression tests (thanks jbroussia for the feedback) (user: User branch: trunk)
10:48
[35dc2edb90a94d8e] part of check-in [e2420ad793] added TSynLog.Release method and protected the global TSynLog instances list against potential race condition (user: User branch: trunk)
10:48
[4c8fa3b3e77253bd] part of check-in [79185657933d] added TObjectListLocked class (user: User branch: trunk)
2014-03-28
17:51
[c9748927f058f49b] part of check-in [1d173a91c0] added TSynLog.CloseLogFile method (user: User branch: trunk)
2014-03-16
17:59
[c6a59ff3bc5b1336] part of check-in [23ed1be8a4] updated documentation (user: User branch: trunk)
2014-03-15
15:14
[e3513a1af6cf7a17] part of check-in [814b361fa0] fixed EXTRACTALLRESOURCES process for multi-platform Delphi versions (user: User branch: trunk)
2014-03-12
16:26
[f6306b737da98de9] part of check-in [d0b95f7818] one step forward for field mapping support for external database ORM - remaining task will be JSON creation with the mapped internal field names instead of external field names (with potential on-the-fly value lookup/conversion in the future) (user: abouchez branch: trunk)
2014-03-11
16:02
[48d6d26995480e08] part of check-in [b717f26637]
  • added CSVToRawUTF8DynArray() overloaded functions
  • added TTextWriter.LastChar and TTextWriter.AddStrings() methods
(user: abouchez branch: trunk)
2014-03-09
21:04
[5b99ebb663c66fc3] part of check-in [080235e63f] fixed function TSynNameValue.Initialized (user: User branch: trunk)
18:15
[aefbc23dae045c77] part of check-in [0166ed5d14] added TSynBackgroundThreadMethod class, able to process any Synchronize() compatible TThreadMethod callback (user: User branch: trunk)
2014-03-04
20:10
[27d824e3b9287d93] part of check-in [cf9bf72e43] added TDocVariantData.Delete() methods, and corresponding Delete() pseudo methods to the TDocVariant instance (user: User branch: trunk)
17:29
[7b98341814d81a71] part of check-in [5da7381545] now TDocVariant instances will return their members as varByRef, both via TDocVariantData.Value[] property or via late-binding - so it will induce better performance and proper execution of any pseudo-methods (like Add) to sub properties: as a result, we introduced the function DocVariantData(aVariant)^ which is to be used instead of TDocVariantData(aVariant) to safely access the internal structure of the TDocVariant instance, even if it was retrieved as varByRef (user: abouchez branch: trunk)
2014-03-03
15:22
[14fc6e5326fa3b0b] part of check-in [349694e1e5] fixed compilation warning for Unicode versions of Delphi (user: abouchez branch: trunk)
2014-03-02
17:59
[898b1eb972847729] part of check-in [63e214dd4d] enhanced TDocVariant custom type, including aVariantArray._ := 'new item' syntax and write-enabled TDocVariant.Data.Values[]property - also updated the documentation and enhanced the corresponding regression tests (user: User branch: trunk)
2014-03-01
22:09
[706629b8e46a8153] part of check-in [d4994d7636] added TSQLDBConnectionProperties.OnBatchInsert property and the corresponding MultipleValuesInsert() protected method to implement INSERT multiple VALUES - now SQlite3 as external database is able to use this feature, and BATCH insertion speed in this case is increased by 70% (user: User branch: trunk)
2014-02-27
15:32
[971633172c4529fe] part of check-in [b2bee21139] fixed unexpected access to TSQLRestServer.Stats when destroying the instance, after background thread process of an interface-based service - thanks FastMM4 for showing the issue! :) (user: abouchez branch: trunk)
2014-02-26
22:24
[d6d301d8dbc5edba] part of check-in [f42ef34f8a] added DYNARRAY_* prefix for hashing or comparison array of functions (user: User branch: trunk)
14:23
[5e7362f89e3616bb] part of check-in [ae30cc3b64] finishing code review for TDynArray support of variant content, and also fixing some unexpected issues when working with WideString values (user: abouchez branch: trunk)
2014-02-25
21:59
[5fa4bf9a7dd8c95c] part of check-in [fbed086c0d] TDynArray will now recognize TVariantDynArray or variant fields (user: User branch: trunk)
12:59
[e2a81377d6be6f4c] part of check-in [68bbd8d0db] added _Unique() and _UniqueFast() global functions, and corresponding TDocVariantData.InitCopy() method (user: abouchez branch: trunk)
12:58
[286f40fe6d4a259b] part of check-in [b5c1abbc20] added TSynInvokeableVariantType.CopyByValue() virtual method (user: abouchez branch: trunk)
2014-02-23
19:59
[e8b2c6f4c7b34134] part of check-in [d93585b030] fixed potential GPF in serveral functions, when working with WideString (WideString aka OleStr do store their length in bytes, not WideChars) (user: User branch: trunk)
2014-02-21
16:25
[4bb97b4e2273edfd] part of check-in [8bb30a292c] added fSessionAuthentications: IObjectDynArray - also added an ESynException and updated the documentation about the fact that the interface MUST be defined before the dynamic array (user: abouchez branch: trunk)
2014-02-20
15:54
[bcee514ce1e48201] part of check-in [1c06989b4d] enhanced tests + several fixes of TObjectDynArrayWrapper (user: abouchez branch: trunk)
15:43
[ad96788f608d40d7] part of check-in [0f8cd9c9a0] fixed issue in function GotoNextJSONItem() - and e.g. DynArrayLoadJSON() - with spaces within some JSON content (user: abouchez branch: trunk)
2014-02-19
19:27
[db3ae9b711b4755f] part of check-in [eeebb48c0e] introducing TObjectDynArrayWrapper class and IObjectDynArray interface (and associated regression tests) (user: abouchez branch: trunk)
2014-02-18
11:18
[7a21c28d7a1d2914] part of check-in [25c62d0f2a] unifies UTF-8 / UTF-16 BOM detection code (user: abouchez branch: trunk)
2014-02-17
16:03
[2bb58bee3578abe0] part of check-in [180954db73] fixed potential GPF issue in TMemoryMapText.LoadFromMap() + slightly performance increase in huge text file parsing (user: abouchez branch: trunk)
2014-02-14
16:27
[fde1ded44a2f427f] part of check-in [5ae68e665b] added GetTickCount64() function, native since Windows Vista, emulated e.g. for XP (user: abouchez branch: trunk)
2014-02-13
14:38
[a3ef6697b38446d9] part of check-in [5b4edc182a] avoid potential buffer overflow issue in GetJSONField() (user: abouchez branch: trunk)
14:31
[927b252b2f03316b] part of check-in [ef9dcb1fff] fixed potential buffer overflow in function GotoEndOfJSONString() (user: abouchez branch: trunk)
14:29
[d5dda1e066624bb6] part of check-in [a72fdc629c] fixed memory leak (user: abouchez branch: trunk)
13:40
[7c5c97d1e305afde] part of check-in [5dc231900e] added RawByteString support for text-based record serialization, using Base-64 encoding (user: abouchez branch: trunk)
13:38
[1f8c24408e141a8a] part of check-in [c386982769] added Base64MagicCheckAndDecode() function (user: abouchez branch: trunk)
2014-02-12
16:28
[f993c1c3a5b3f073] part of check-in [be65b4c730] polishing MongoDB process - still not tested ! (user: abouchez branch: trunk)
2014-02-11
16:20
[b854694ff7865591] part of check-in [6bd6463adc] added TFileBufferWriter.Tag property (user: abouchez branch: trunk)
2014-02-10
14:12
[0cc0ef54c7370211] part of check-in [1bd6b14a03] enhanced implicit conversion to/from string for TDocVariant and TBSONVariant custom types (user: abouchez branch: trunk)
2014-02-09
18:34
[b9e0f61c76888a2a] part of check-in [99e86b93de] fix for packages in Win64 (or PUREPASCAL mode) (user: User branch: trunk)
2014-02-08
20:06
[c4da50d5072f5b52] part of check-in [c7eadcd362] fixed compilation when USEPACKAGES conditional is defined (user: User branch: trunk)
08:55
[f4c12cc8b282d3e1] part of check-in [38ef02a309] added TFileBufferWriter.WriteBinary() (user: User branch: trunk)
2014-02-07
17:14
[2517eb9e54000cf0] part of check-in [035179e169]
  • new TRawUTF8List.GetObjectByName() method
  • added TSynInvokeableVariantType.IsOfType() method
  • added _ObjFast() and _ArrFast() functions
  • added TDocVariantData.Capacity property
(user: abouchez branch: trunk)
2014-02-06
10:12
[480d7655b995034a] part of check-in [a757f364cc] added overloaded procedure RawUTF8ToVariant() (user: abouchez branch: trunk)
10:00
[7c357fc531ec2a4c] part of check-in [7adbdc3bc8] added TDocVariantData.ToRawUTF8DynArray() method (user: abouchez branch: trunk)
2014-02-05
08:51
[6966c5f331ca8d10] part of check-in [b5d18a3b03] added TSynBackgroundThreadProcedure class for procedure execution in a background thread (user: abouchez branch: trunk)
2014-02-04
15:19
[43942bb97a9aeae5] part of check-in [55b2e7ae73] TSynBackgroundThread* will now access void OnIdle property (user: abouchez branch: trunk)
15:12
[0236f3405defd383] part of check-in [f4f121c2f1] fixed LVCL compilation issue (user: abouchez branch: trunk)
12:14
[23e4716a6932bda1] part of check-in [b5430fa5d0] if DOPATCHTRTL is defined, will enable asm-optimized RecordClear and _InitializeRecord functions in replacement to the slower RTL version, and patch TObject.CleanupInstance before Delphi 2009 (since TMonitor.Destroy is sadly private to System.pas) (user: abouchez branch: trunk)
2014-02-03
10:13
[93df814d135cf361] part of check-in [ace2439a47] implement ticket [e3f9742865] proposal for enhanced JSON in woHumanReadable mode for TJSONSerializer.WriteObject(), and soWriteHumanReadable in TJSONCustomParserRTTI.WriteOneLevel() (user: abouchez branch: trunk)
2014-01-30
19:58
[920a0e8ac52c1282] part of check-in [74626caadd] introducing TMongoRequest* classes and TMongoReplyCursor type (user: abouchez branch: trunk)
12:38
[b0f82211cd725da4] part of check-in [76d8cc0c72] fixed Delphi 5 compilation issues (user: abouchez branch: trunk)
2014-01-29
21:25
[72ed48bec1c80a95] part of check-in [1aa2e81fdd] added VariantToInt64() function and overloaded Int32ToUTF8() Int64ToStr() Curr64ToStr() ExtendedToStr() PointerToHex() procedures to avoid a result RawUTF8 assignment and local stack variable with a try..finally hidden block (user: User branch: trunk)
19:36
[cd6885467ead9c37] part of check-in [6f5a62e6d4] now all variants created within our units (with the exception of SynDB which targets the VCL with its TQuery emulated class) will create string instances of kind varString and type RawUTF8 - prior to Delphi 2009, ensure you call UTF8ToString(aVariant) if you want to use the value with the VCL (user: User branch: trunk)
11:07
[c955d0e1e4c135f5] part of check-in [dd1d213152] new TTextWriter.AddJSON() method and JSONEncode() overloaded function able to recognize (extended) JSON content, including MongoDB shell extensions (user: abouchez branch: trunk)
10:35
[67d1a3771403bbe9] part of check-in [c353d3d723] JSONEncode() and TTextWriter.AddJSONEscape() with NameValuePairs parameters will now handle nil parameter as null JSON value (user: abouchez branch: trunk)
08:32
[6835d9886a3ef8e2] part of check-in [a1e3fddd4f] JSONEncode() and TTextWriter.AddJSONEscape() with NameValuePairs parameters will now handle nested arrays or objects specified with '['..']' or '{'..'}' (user: abouchez branch: trunk)
2014-01-28
22:13
[0130ac6767dfcae9] part of check-in [cce5232c01] added VarRecAsChar() and overloaded UInt32ToUtf8() procedures (user: User branch: trunk)
14:38
[ae44d97cf2a10e6e] part of check-in [bd48c338f0] documentation update (user: abouchez branch: trunk)
13:51
[62d95b91a172050f] part of check-in [e6c05e58a9] renamed Iso8601 low-level structure as TTimeLogBits, and use explicitly the TTimeLog type and name for all Int64 bit-oriented functions - now *Iso8601* will be used only for standard ISO-8601 textual representation (user: abouchez branch: trunk)
11:57
[52bd3a45c7e1dbe9] part of check-in [cf150edd75] added aDocVariant.Exists(aName) and aDocVariant.NameIndex(aName) pseudo-methods for TDocVariant custom types (user: abouchez branch: trunk)
10:00
[e10de5d4f95816cf] part of check-in [0619805de0] fixed Delphi 5 compilation issue (user: abouchez branch: trunk)
2014-01-24
16:10
[57480dbbf46339e4] part of check-in [b8e0b698e1]
  • moved TSQLDBFieldType from SynDB to SynCommons, and used by TSQLVar and all database-related process (i.e. in mORMot and SynDB units)
  • added TSynLog.DebuggerNotify() method
  • low-level vt_*() callbacks defined for TSQLVirtualTableModuleSQLite3 will now call SynSQLite3Log.DebuggerNotify() in case of any process error
  • several speed-up of some GetFieldSQLVar/SetFieldSQLVar methods, used by the ORM when sending/retrieving data to/from database content
  • added DateTimeToIso8601ExpandedPChar() function
(user: abouchez branch: trunk)
12:40
[4a8787392f1d0800] part of check-in [f1d4483626] enhance TSynAnsiConvert.AnsiBufferToUnicode() function, trying to fix an issue occuring on some versions of XP only (user: abouchez branch: trunk)
2014-01-23
17:56
[794667e5ba4c7015] part of check-in [394510c7b7] introducing TSQLVar (and TSQLVarType) to define database-oriented values used by SynDB, mORMot, mORMotDB and mORMotSQLite3 units (instead of former confusing TVarData record, which is now restricted to variant memory structure mapping, as it should have stayed) (user: abouchez branch: trunk)
09:23
[64bd803fc4159ace] part of check-in [347a6f08fc] added TTextWriter.AddAnyAnsiString() method - for Delphi 2009 and up (user: abouchez branch: trunk)
2014-01-22
19:24
[b735319e5c6691b3] part of check-in [b26dda4a54]
  • added GotoEndOfJSONString() function
  • added GetJSONPropName() function, able to understand MongoDB extended syntax
  • MongoDB extended syntax is now parsed almost everywhere in the mORMot framework units, including TSQLTable and services
  • text-based custom serialization of records will now handle variant fields (including custom variant values, like TDocVariant or TBSONVariant)
(user: abouchez branch: trunk)
15:32
[e851e7068e77251d] part of check-in [042357d2b7] fixed potential buffer overrun issue (user: abouchez branch: trunk)
12:42
[1eee481c0f9f2f85] part of check-in [eb14da93c8] added JSONFormat optional parameter to FormatUTF8() to produce valid JSON content from a given set of values identified by ? - used e.g. by _JsonFmt() and _JsonFastFmt() to allow e.g.
 _JSONFmt('{%:{$in:[?,?]}}',['type'],['food','snack'])  _JSONFmt('{type:{$in:?}}',[],[_Arr(['food','snack'])])
(user: abouchez branch: trunk)
10:04
[0771390a70f5fc33] part of check-in [6fc099a149]
  • added ToVarString() functions
  • introduced boolean property TTextWriter.FlushShouldNotAutoResize
  • added VariantSaveJSONLength() function
  • second step to integrate our TDocVariant / TBSONVariant custom variants to the main variant process of SynCommons and mORMot: now those types are natively handled everywhere in the framework, e.g. as published properties of any TSQLRecord, or when saving to/from SQL (as JSON text); so it will help layering TSQLRecord to work with MongoDB document oriented area at full power, i.e. with some fixed fields (e.g. for indexing), then with any nested tree of properties with late binding magic - and also still being compatible with regular RDBMS SQL databases
  • includes deep refactoring and test of SynMongoDB unit
(user: abouchez branch: trunk)
2014-01-20
13:37
[5d3b7ef59432afe6] part of check-in [77d48d57ff] let global VariantLoadJSON() and GetVariantFromJSON() being able to handle any custom JSON type of object or array (includnig MongoDB JSON-strict special objects, or even the MongoShell enhanced syntax), just like TDocVariantData.InitFrom() method (user: abouchez branch: trunk)
08:11
[06fc9953f3cf6b06] part of check-in [9014c28bd5]
  • added function GetJSONFieldOrObjectOrArray() in unit's interface section
  • fix Delphi 5 compilation issue
  • some minor code refactoring about low-level Delphi RTL functions patching
  • fix typo in documentation
(user: abouchez branch: trunk)
2014-01-19
14:52
[304d144258a5c164] part of check-in [35702a3019]
  • TBSONElement has now some methods for proper OOP process (better than some global functions)
  • first step to integrate our TDocVariant / TBSONVariant custom variants to the main variant process of SynCommons and mORMot - goal is to let those kind of variants be handled natively everywhere in the framework, e.g. as published properties of any TSQLRecord; so it will help layering TSQLRecord to work with MongoDB document oriented area at full power, i.e. with some fixed fields (e.g. for indexing), then with any nested tree of properties - so letting data sharding be as native as possible :)
(user: User branch: trunk)
2014-01-18
19:38
[4c91a18e2289ab74] part of check-in [534511471713695435e] minor Currency conversion to text /JSON enhancements (user: User branch: trunk)
15:01
[41a878637797ce16] part of check-in [eacdd07cc5] updated documentation (user: User branch: trunk)
14:31
[90bec2a9895d9cc6] part of check-in [44bb234c2f] renamed USEVARIANTS into its inversed NOVARIANTS conditional, since we can assume that any compiler will handle variants by default (unless you are using LVCL for instance, which is the less common case) (user: User branch: trunk)
13:42
[6ebbed9036d45015] part of check-in [f953b66029]
  • added Iso8601.FromUTCTime method and function NowUTC
  • deep refactoring of the custom variant types implementation in SynCommons / SynMongoDB: TSynDocumentVariant* types have been renamed TDocVariant*, and associated methods or functions have following the new naming convention
(user: User branch: trunk)
2014-01-17
17:38
[6b9576e3eccbfd40] part of check-in [5d1a96b3df] almost complete BSON / JSON processing:
  • BSON can be parsed via light (SAX-based) TBSONElement - so it is very optimized for speed and low resource use (this is unique in the Delphi world, and even with most BSON libraries around)
  • every BSON objects have their own (custom) variant equivalence, so our variant-based document process via TSynDocumentVariant is almost complete and ready to interact with BSON types
  • all those BSON types are now able to be serialized to/from JSON, using either the JSON RFC standard syntax, either the MongoDB Extended JSON syntax, or even the MongoDB shell syntax
  • BSON binary content can be created from any JSON or TSynDocumentVariant document
  • regression tests included
(user: abouchez branch: trunk)
2014-01-16
09:38
[9af6cace74e2964a] part of check-in [36459f213f]
  • added TSynNameValue.OnAfterAdd callback event
  • TTextWriter.Add(Format..) will now ignore any character afer |, i.e. |$ = $
(user: abouchez branch: trunk)
2014-01-15
23:26
[be55915eb0089dc3] part of check-in [554058a048] moved swap32() function from SynCrypto to SynCommons (user: User branch: trunk)
20:27
[c0d57082d07023a6] part of check-in [085b423acd] added UnixMSTimeToDateTime/DateTimeToUnixMSTime functions (user: abouchez branch: trunk)
20:01
[1a1ff8ecd04b3caa] part of check-in [a81f87dbb5] now a TSynDocumentVariant document can be serialized as binary encoded BSON stream (user: abouchez branch: trunk)
17:50
[8a421a38001deb04] part of check-in [b1209db5dc]
  • try to fix some unexpected failed test cases durnig regression tests, when running on MBCS (e.g. Asian) systems
  • introducing TBSONObjectIDVariant as custom variant type used to store a BSON ObjectID (and associated regression tests)
(user: abouchez branch: trunk)
11:03
[70efc52ca7ca81d9] part of check-in [08a76a9527] handle variant serialization in/from our binary custom format, using new VariantLoad(), VariantSaveLength() and VariantSave() functions (user: abouchez branch: trunk)
09:54
[a44c9520e95dafa5] part of check-in [d767de6106] some refactoring of TSynDocumentVariant/TSynDocumentVariantData code, for faster process and less memory use - also includes new Name(), Value() or Add() pseudo-methods to variant late-binding (user: abouchez branch: trunk)
2014-01-14
22:33
[482890663c8ab4dd] part of check-in [ae6d41158b] small enhancements to TSynDocumentVariant process (user: User branch: trunk)
21:21
[2297a1a696855d4b] part of check-in [ac82369590] inlining may increase speed (user: User branch: trunk)
21:06
[d82af4c27388170e] part of check-in [d1c860db0d] no need to create a complex TSynDocumentVariant instance when retrieving JSON null values (user: User branch: trunk)
21:00
[7e80f862844df137] part of check-in [2deb5ff461] noticeable speed enhancement (for huge input) by avoiding uneeded temporary variant allocation when parsing JSON in method TSynDocumentVariantData.InitFrom() (user: User branch: trunk)
19:52
[89ea3909e6e8c69a] part of check-in [8bfe3b50e5] introducing TSynDocumentVariant for variant-based process of any hierarchy of objects and/or arrays, with late binding optimized access and JSON serialization/unserialization (will also be used for BSON documents storage) - HOT CONTENT !!! :) (user: abouchez branch: trunk)
19:29
[f90f65af3373fa44] part of check-in [f6a25c9047]
  • added TTextWriter.AddQuotedStr() method
  • added VariantToInteger()/VariantToIntegerDef() function for direct process of numerical variants (e.g. array indexes)
  • new overload function to IdemPropNameU()
  • new TDynArray.CopyFrom() method and associated procedure DynArrayCopy()
  • new RawUTF8ToVariant() and VarRecToVariant() procedures
(user: abouchez branch: trunk)
2014-01-13
11:10
[0130336a3f323803] part of check-in [1ea4c897cb] fixed potential hash collision in TDynArrayHashed (user: abouchez branch: trunk)
2014-01-10
12:08
[0137ab7575bd30e4] part of check-in [7bf70fbaa6] TSynLog will now append only the execution time when leaving a method, without the class/method name (smaller log file, and less resource use) (user: abouchez branch: trunk)
2014-01-08
21:05
[58edd577bce3af1f] part of check-in [4cb0aae0fd] added TLocalPrecisionTimer/ILocalPrecisionTimer to alllocate a local timer instance on the stack (user: User branch: trunk)
17:30
[389b0c60e3be725f] part of check-in [6182b5149a] added AES encryption using official Microsoft AES Cryptographic Provider (CryptoAPI) via TAESECB_API, TAESCBC_API, TAESCFB_API and TAESOFB_API - our optimized asm version is faster, so is still our default/preferred (user: abouchez branch: trunk)
2014-01-07
14:43
[4b797fe39282f891] part of check-in [39036dba97] reverted ticket [73da2c17b1] about Accept-Encoding header in THttpApiServer (user: abouchez branch: trunk)
10:55
[e144868ff1b4c7d7] part of check-in [21e882fef4] added optional default value parameter to TSynNameValue.Value() method (user: abouchez branch: trunk)
2014-01-03
09:26
[7014ef603e106aae] part of check-in [46afe9e0fc] fixed Delphi 5 compilation issues (user: abouchez branch: trunk)
2014-01-01
13:31
[ad9013045c5ffcd7] part of check-in [44147954e2] The little mORMot wishes you an happy new year 2014! (user: User branch: trunk)
2013-12-31
15:24
[305a358647f2bfe6] part of check-in [7f89ac7467] fixed unexpected GPF in TSynCache.Find() e.g. when cache is disabled (user: User branch: trunk)
10:43
[b0abd2053824571a] part of check-in [19ac0042ff] added some comments to help better understand the TSynCache algorithm (user: User branch: trunk)
2013-12-29
17:11
[925acadf6c470100] part of check-in [d8ee23e3e9] fixed TJSONSerializer.AddTypedJSON() so that it will produce valid JSON content (user: User branch: trunk)
16:16
[2cb6ab75ff44f485] part of check-in [b18cb8384b] text-based JSON serialization of records will now check that it has been defined as PACKED (user: User branch: trunk)
2013-12-21
13:05
[98f18c799bcd567b] part of check-in [5c874acdfe] fixed unexpected GPF issue - only appearing in Win64 by now (user: User branch: trunk)
2013-12-20
11:04
[ce7f97c268afd042] part of check-in [98387083f9] fixed another potential GPF issue (user: User branch: trunk)
10:52
[671a3fa2ffa7cad0] part of check-in [6e28c20745] fixed unexpected GPF error when clearing existing record content during JSON unserialization (user: User branch: trunk)
2013-12-18
18:44
[ffa07433490a98d2] part of check-in [b0371f5e5a] now text-defined JSON record serialization is able to handle any pre-defined record types - added regression tests and updated documentation (user: User branch: trunk)
09:31
[645a0a0193154410] part of check-in [a016c7bbaf] added .json like pattern to GetMimeContentType() - see [fca72ba0ce] (user: User branch: trunk)
2013-12-15
22:27
[3a9d2cc9110af18f] part of check-in [14084bc88d] internal SQLite3 result cache is now case-sensitive for its SQL key values (user: User branch: trunk)
2013-12-14
22:30
[ec94399f09666739] part of check-in [453dcdf71c] handle "array of array" for text-based custom JSON serialization (and continue to work of custom nested types recognition in the same context) (user: User branch: trunk)
2013-12-13
15:14
[228f2ccca896131f] part of check-in [dbc4a527ac]
  • added TTextWriter.UnRegisterCustomJSONSerializer() method
  • code refactoring to prepare text-based JSON serialization of record containing any already-registered custom record types, in addition to standard simple types - not finished yet, but almost ready :)
(user: abouchez branch: trunk)
2013-12-12
17:06
[8a569a7e605074ed] part of check-in [80ae044b82] small code rewriting to add the actual DB statement implementation class name in case of a runtime exception (user: abouchez branch: trunk)
14:34
[48c477c7607a6708] part of check-in [767c34eae7] TTextWriter.RegisterCustomJSONSerializerFromText() now support JSON serialization/unserialization of TGUID values (encoded as JSON strings) (user: abouchez branch: trunk)
14:16
[b7c4cab3bb15738d] part of check-in [2f38c72468] added TextToGUID, RawUTF8ToGUID and StringToGUID functions (user: abouchez branch: trunk)
11:05
[ef864a4fccd1deb5] part of check-in [a687dd4680]
  • added IsEqualGUID, GUIDToText, GUIDToRawUTF8 and GUIDToString functions
  • added TTextWriter.Add(const guid: TGUID) overloaded method
(user: abouchez branch: trunk)
10:08
[ac21259a299518cb] part of check-in [fad04d9232] deeper code refactoring of JSON custom serialization - some low-level local functions are now defined as protected virtual methods (user: abouchez branch: trunk)
2013-12-11
20:00
[2253ef7a5e88f41a] part of check-in [d0962a2041] declared PByteArray, PWordArray, PPointerArray in the SynCommons.pas unit: to ensure code will still work even if range checking is defined globally - see [d6b38a96e6] (user: User branch: trunk)
17:45
[8b9604ae2834684a] part of check-in [4720d982ca] code refactoring for better speed and more test content coverage for record JSON serialization (user: abouchez branch: trunk)
14:16
[8fdb757e419af798] part of check-in [04e98b979e] fixed an unexpected potential false positive exception when parsing custom JSON serialization text-based definition (user: abouchez branch: trunk)
13:40
[2069d3fec755a6be] part of check-in [20c6b314ed] several small speed enhancements (user: abouchez branch: trunk)
12:53
[7534b8bf40f406df] part of check-in [fef76f759c]
  • TSynTestCase.TestFailed now triggers a debugger breakpoint when run from IDE
  • faster FromVarInt64/FromVarInt64Value implementation
(user: abouchez branch: trunk)
2013-12-10
20:08
[3e27afe10e783bcc] part of check-in [5dcaab368d] added byte and word kind of variables for JSON serialization (user: User branch: trunk)
17:59
[bcbc3817be5e46df] part of check-in [24b4d32a0d] fixed a potential issue during JSON record serialization + enhance regression tests (user: abouchez branch: trunk)
16:13
[cd05feb0b4670a10] part of check-in [854f536383] added JSON encoding/decoding from a RESTful api.discogs.com request - and fixed a GPF issue when some fields were missing in the parsed JSON (user: abouchez branch: trunk)
13:01
[2630141a929bdf1a] part of check-in [9d3903de92] introducing TSynAnsiUTF16 to handle CP_UTF16 codepage - also enhanced charset encoding classes tests (user: abouchez branch: trunk)
09:29
[bf83157d2c15b64e] part of check-in [8d96ad1efe] introducing TSynAnsiUTF8 to handle CP_UTF8 codepage (user: abouchez branch: trunk)
2013-12-09
18:15
[5b099eca607a8bd0] part of check-in [0cbd583779] SynCommons.GetEnumName() will now work in PUREPASCAL mode (e.g. Win64) (user: abouchez branch: trunk)
15:33
[422e0bb58aaeaff4] part of check-in [2950b39ac5] removed CreateWithCodePage() constructor: now the charset will be retrieved at connection, and used for CHAR/NVARCHAR2 fields - see ticket [a6a639ec43] (user: abouchez branch: trunk)
14:31
[9577587d6af0ea6c] part of check-in [9ebf6d9648]
  • added DynArraySaveJSON() function to be used e.g. for custom record JSON serialization, using TDynArrayJSONCustomReader/Writer callbacks and/or TTextWriter.RegisterCustomJSONSerializerFromText()
  • added TTextWriter.AddCRAndIdent method
  • TTextWriter.RegisterCustomJSONSerializerFromText() now handles BOOLEAN kind of fields, and soWriteHumanReadable option when serializing into JSON context
  • enhanced testing by retrieving and processing some JSON real-life content from the official github RESTFull service
(user: abouchez branch: trunk)
2013-12-08
13:08
[ab745b0e85b98bc4] part of check-in [1a8d821f4c] do not reallocate dynamic array memory for smallest size (<=64 items) (user: User branch: trunk)
2013-12-06
16:26
[3b745d1af464e843] part of check-in [4e22df67b6] renamed FieldNameValid() function into PropNameValid() for better consistency (user: abouchez branch: trunk)
10:12
[39a2abe4b4f48f11] part of check-in [449874a78f] we do like premature optimizations - yes, we are evil! :) (user: abouchez branch: trunk)
2013-12-05
15:46
[038bcff30a997b1a] part of check-in [3e20de5e38] speed improvement of IdemPropNameU() function (user: abouchez branch: trunk)
2013-12-02
22:30
[9da74d7b0a58d503] part of check-in [bbd76bc873] enhanced custom JSON serialization: several fixes, and now handle simple arrays (e.g. "array of integer/string/...") (user: User branch: trunk)
18:24
[a4544467dc6ad7d4] part of check-in [86b8661a18] finishing TJSONCustomParserFromTextDefinition to handle text-defined additional RTTI for JSON record serialization (perfect for DDD value objects) - supplied regression tests have now good coverage (user: abouchez branch: trunk)
2013-12-01
22:22
[10a59c66b8cb9c39] part of check-in [73016ab2a8] introducing TJSONCustomParserFromTextDefinition to handle text-defined additional RTTI for JSON record serialization - not finished yet (user: User branch: trunk)
2013-11-21
18:10
[020ec16de90453ac] part of check-in [f8931bcbec] added SynDBMidasVCL.pas unit, able to fill a VCL TClientDataset from a SynDB statement: slower than our new virtual SynDBVCL.pas, but may be convenient as such (user: abouchez branch: trunk)
2013-11-19
19:45
[ec1d8b25bab2f766] part of check-in [bdb81d330c] small documentation update (user: User branch: trunk)
2013-11-18
07:46
[082f34df59689d32] part of check-in [95f19916bd] fixed compilation error with Delphi 2007+ compilers (user: abouchez branch: trunk)
2013-11-17
13:35
[43515218512ee36b] part of check-in [b55ead20df] added TTextWriter.Add(const Values: array of const) method (user: User branch: trunk)
2013-11-16
12:10
[5690e1f9f968127c] part of check-in [4b271f9053] enhanced LVCL support for mORMot - including new TEvent class to enable multi-thread process using LVCL (user: User branch: trunk)
2013-11-15
15:07
[9fc8612a58fbdbe6] part of check-in [e0041ce6e1] added FromVarInt64Value() and FromVarBlob() functions (user: abouchez branch: trunk)
2013-11-13
08:13
[4fda183e748b86a9] part of check-in [d7600a2da4] fixed TFileBufferWriter.TotalWritten returned value in some border-line cases (user: abouchez branch: trunk)
2013-11-11
19:26
[e563fcd698885490] part of check-in [67cc61a765] fixed unexpected warning about deprecated Seek() method with latest versions of Delphi (user: abouchez branch: trunk)
14:53
[d02ebfcb74b8862e] part of check-in [17c4877408]
  • TODBCConnectionProperties.Create will now handle full ODBC connection string in aDatabaseName instead of ODBC Data Source name in aServerName
  • GetCol() will now retrieve all columns at once - mandatory for drivers not supporting SQL_GD_ANY_ORDER feature (like the "SQL Server Native Client 10.0" for ODBC)
(user: abouchez branch: trunk)
2013-11-10
20:56
[7df613291f50afbf] part of check-in [e9611a83ef] added BindCursor() and BoundCursor() methods to handle CURSOR kind of parameters for Oracle - very common with stored procedures - for feature request [f506341843]. Please note this commit haas not been tested yet! (user: User branch: trunk)
13:03
[8b51df1e11f6692b] part of check-in [64320a3a98] implement woHumanReadableEnumSetAsComment option for JSON serialization (and corresponding TEnumType.GetEnumNameTrimedAll() method) - also includes regresion tests for all human readable JSON format features (user: User branch: trunk)
2013-11-09
22:33
[0252cd26956b10b6] part of check-in [641c0ead05] added woHumanReadableFullSetsAsStar option for JSON sets serialization (default will be compatible as previous behavior) (user: User branch: trunk)
22:27
[8d683d103279f49b] part of check-in [f910a0ca33] fixed ticket [aff1352239] to identify 9999-12-31 dates as valid (user: User branch: trunk)
22:23
[467f2d200031dfee] part of check-in [cab7158465]
  • code refactoring of TTextWriter to simplify flushing mechanism, and allow internal buffer auto-grow if it was found out to be too small
  • fixed ticket [5bd9df5979] about TTextWriter.CancelAll issue
  • added optional internal buffer size for TTextWriter.CreateOwnedStream()
  • added TTextWriter.ForceContent() method
(user: User branch: trunk)
16:04
[5d15be18f7e992b5] part of check-in [6533facbd3] added GetAllBits() function and associated regression tests (user: User branch: trunk)
2013-11-07
09:09
[acdc622a074abd3d] part of check-in [52d7340f2c] added overloaded function FindRawUTF8() using array of RawUTF8 parameter (user: abouchez branch: trunk)
08:49
[87e86867c2d4c03f] part of check-in [29e839ff62] added TSynTestCase.CheckMatchAny() method for multi-value checks (user: abouchez branch: trunk)
05:30
[9d3e2ff805f1c8bb] part of check-in [261736cc0a] faster TTextWriter.AddNoJSONEscapeString() method (user: User branch: trunk)
2013-11-06
12:08
[712e1cd791e89dcf] part of check-in [8e19ec582d] small code refactoring for more consistent internal dynamic array use (user: abouchez branch: trunk)
2013-11-05
16:22
[965a3b9009ef9ed6] part of check-in [6ba8c38205] new TDynArrayHashed.AddUniqueName() method (user: abouchez branch: trunk)
2013-11-03
22:03
[540419b096c061b8] part of check-in [1ed47c15d8] much better function HashPtrUInt() for Win32 (user: User branch: trunk)
15:12
[12b03da166053876] part of check-in [02b97228d5] fixed [7658da5529] unexpected hash collision in TDynArrayHashed and TObjectListHashed (user: User branch: trunk)
2013-10-29
12:42
[d19192df552c92fe] part of check-in [e80305d139] new IdemPropName() overloaded function with two PUTF8Char arguments (user: abouchez branch: trunk)
2013-10-28
22:12
[de20bf0b0e516253] part of check-in [60e636ee86] added function TrimLeftLowerCaseToShort() and method TTextWriter.AddTrimLeftLowerCase() (user: User branch: trunk)
2013-10-27
07:13
[f5ae1f6538a6c5e2] part of check-in [be6e954bbd] speeed enhancement for TRawUTF8List.Add() (user: User branch: trunk)
2013-10-24
12:17
[0f3c67db60d18715] part of check-in [e14a9cb145] added TPrecisionTimer.ProfileCurrentMethod() and TimeInUniSec property for feature request [1abca090ee] (user: abouchez branch: trunk)
11:58
[cc836ff0ea063bc6] part of check-in [01b38ca3f8] new overloaded TFileBufferWriter.Create() constructor able to use a TStream class to replace CreateInRawByteStringStream and CreateInMemoryStream methods (user: abouchez branch: trunk)
2013-10-14
18:03
[3ab29b389eda68bc] part of check-in [ea9906c141]
  • refactoring of TSQLRestServer.URI() to allow all HTTP verbs to interface-based services (and better code maintenance)
  • added TServiceFactoryServer.ByPassAuthentication property to release authentication for a given interface-based service
(user: abouchez branch: trunk)
15:46
[d7094d8454721f5a] part of check-in [52b9438288] refactoring of CaseSensitive property for TRawUTF8List / TRawUTF8ListHashed (user: abouchez branch: trunk)
2013-10-11
08:12
[d9c987e2137b0b05] part of check-in [d52096d99c] now FileSize() function will return any size > 2 GB as expected (user: abouchez branch: trunk)
2013-10-08
12:40
[d1789279028d397e] part of check-in [9cf354672d] added AnyTextFileToString() and AnyTextFileToSynUnicode() functions (user: abouchez branch: trunk)
09:08
[c0fecec68c0aab8b] part of check-in [01672224ef] double/currency published properties will now use getter/setter methods as expected (user: abouchez branch: trunk)
2013-10-02
09:57
[8ad61708a31e7621] part of check-in [167cdcb9bc] added GetNextItemInteger() function, and some IntervalText*() regression tests (user: abouchez branch: trunk)
08:31
[2770c07eca8bba35] part of check-in [7873ce7c0d] enhanced SQLT_INTERVAL_YM/SQLT_INTERVAL_DS column support in all involved methods: it will now return a regular TDateTime value or its corresponding ISO-8601 date/time text for JSON (but no ISO-8601 time interval pattern) (user: abouchez branch: trunk)
08:08
[8001a15cec16d856] part of check-in [0db32af27d] added Iso8601ToTimePUTF8Char[Var]() and IntervalTextToDateTime[Var]() functions (used e.g. by TSQLDBOracleStatement.ColumnDateTime method) (user: abouchez branch: trunk)
2013-09-30
15:03
[2296357f4081f019] part of check-in [48476828a1] introducing MongoDB document-oriented database direct access classes (not working yet) (user: abouchez branch: trunk)
2013-09-20
12:55
[58d54eb53cc48f7c] part of check-in [2a0ea950c6] fixed potential GPF at application closing (user: abouchez branch: trunk)
2013-09-18
10:13
[7d48c00d329fb842] part of check-in [d1c3ba677f] added TPrecisionTimer.ProfileCurrentMethod() method (user: abouchez branch: trunk)
2013-09-16
11:12
[dd22fa634656023c] part of check-in [45f86318cc] removed virtual from LogInternal() methods as proposed by [ac12ab154c] (user: abouchez branch: trunk)
07:54
[620ce3eaa54d00c2] part of check-in [5ca2b7a415] marked TSynLog.ConsoleEcho as virtual - feature request [ac12ab154c] (user: abouchez branch: trunk)
07:51
[8a3689f469b693a5] part of check-in [0dc5c404d6] added DeleteOnlyFilesNotDirectory option to DeleteDirectory() function for feature request [71a4eaf543] (user: abouchez branch: trunk)
2013-09-11
15:12
[ae656fb4f6746e12] part of check-in [e18a5a9835] added Base64MagicDecode() and SQLToDateTime() functions (user: abouchez branch: trunk)
2013-09-10
09:01
[08a13425955f6a13] part of check-in [0bba977560] added XML_CONTENT_TYPE and XML_CONTENT_TYPE_HEADER constants (user: abouchez branch: trunk)
07:19
[64bff8863f4b9dca] part of check-in [50f6a64507] fixed TQuery emulated class trying to reconnect in all cases, even if the error was only a syntax error for instance (user: abouchez branch: trunk)
07:09
[8618c9229c68bc31] part of check-in [7e62f4d4a8] fixed ticket [e3ae1005dc] about potential GPF in TRawUTF8List.Delete() (user: abouchez branch: trunk)
2013-09-06
11:59
[0ef6775dc6cb0c56] part of check-in [1cce49873b] added Delphi XE5 compiler recognition (guess which number?...) (user: abouchez branch: trunk)
2013-08-30
07:05
[ded9d891cc2d74d0] part of check-in [40840af5a3]
  • added TFileBufferWriter.CreateRawByteStringStream and Write1/4/8 methods
  • added DateTimeToUnixTime() function
(user: abouchez branch: trunk)
2013-08-06
14:31
[f9a618a6b7330651] part of check-in [ded90143cc] fixed parameter name in function UrlDecodeNeedParameters() - [4aff2a3060] (user: abouchez branch: trunk)
14:22
[0c5c11399b0d71cf] part of check-in [ae27ac4acc] refactoring of TSynBackgroundThreadAbstract for faster execution (user: abouchez branch: trunk)
2013-08-05
08:11
[b43c26a02bec4ffb] part of check-in [bd4c4d929c] small parameter renaming, as proposed by [4aff2a3060] (user: abouchez branch: trunk)
2013-08-03
20:50
[e8f816fb11555a27] part of check-in [3077ad7321] added callback-driven TSynBackgroundThreadEvent class, for background process, e.g. used in mORMot unit client (user: User branch: trunk)
2013-08-02
15:44
[24de6e74e4bb92b1] part of check-in [405781b721] added TSynBackgroundThreadAbstract class for generic background process (user: abouchez branch: trunk)
2013-08-01
08:26
[e9931886f8e942d3] part of check-in [084630ba5a] added UnixTimeToDateTime() function (user: abouchez branch: trunk)
2013-07-30
14:19
[941695190a71992f] part of check-in [c514d280d0] get rid of EIndirectException and use of AcquireExceptionObject low-level function in TSQLRestClientURIBackgroundThread for raising the very same exception in caller thread context (user: abouchez branch: trunk)
12:03
[6a32d2b1851332e1] part of check-in [7dbb42a490] explicit naming of our main contributors and sponsors - thanks you all for your contribution, and do not forget about http://synopse.info/fossil/wiki?name=HelpDonate ! :) (user: abouchez branch: trunk)
09:08
[320f5463dc746570] part of check-in [46a8589d7f] new ShortStringToUTF8() function - to be used e.g. from RTTI content (user: abouchez branch: trunk)
2013-07-29
16:09
[7489cda77b16702b] part of check-in [fd810596c8] added Project21HttpClient program for "21 - HTTP Client-Server performance" stress-test sample (user: abouchez branch: trunk)
2013-07-27
17:23
[7f7a9c9a37daceec] part of check-in [83fbad5dde] UnCamelCase() functions will now handle capital words and numbers at the beginning, middle or end of the text - implements request [d0c8210fae] - thanks for the proposal! (user: User branch: trunk)
2013-07-25
14:43
[95034c4173f780ab] part of check-in [f3736fb8de] added TRawUTF8List.CaseSensitive property as requested by [806332d296] (user: abouchez branch: trunk)
12:57
[8c092dc80692f24c] part of check-in [1f67e4dea6] execution speed enhancement when no logging is defined (user: abouchez branch: trunk)
12:12
[bab97e8b28151ecf] part of check-in [8faa06ce32] deep code refactoring to fix ticket [19e567b8ca] about TSynLog issue in heavily concurrent mode:
  • Now a per-thread context will be stored, e.g. for Enter/Leave tracking;
  • Logging thread safety has been improved and tested
(user: abouchez branch: trunk)
2013-07-24
10:59
[48655aaa6dc4b68d] part of check-in [d62e90b92f] fix TSynLog issue in heavily concurrent (multi-threaded) mode (user: abouchez branch: trunk)
2013-07-22
12:22
[50b5c00166c6399d] part of check-in [4673e82596] get rid of 12 maximum count of supplied argument in FormatUTF8() + speed optimization and associated regression tests (user: abouchez branch: trunk)
2013-07-20
08:05
[4d3df0f41060557d] part of check-in [877765593b] small code refactoring for TSQLDBProxyConnection class process (user: User branch: trunk)
2013-07-19
09:45
[8449d49779801eb9] part of check-in [50daec11a0]
  • added TFileBufferWriter.WriteVarInt64() and TFileBufferReader.ReadVarInt64
  • now TFileBufferReader.Read() allows forward reading when Data=nil
(user: abouchez branch: trunk)
2013-07-11
13:03
[6822b5086b98ce21] part of check-in [feb7b66e26] introduced TSingleDynArray, recognized as such in JSON serialization (user: abouchez branch: trunk)
2013-07-08
09:34
[954ed4746d598e1a] part of check-in [93896cd01f] added StringDynArrayToRawUTF8DynArray() and StringListToRawUTF8DynArray() (user: abouchez branch: trunk)
2013-07-05
07:13
[34c06110a6cbd1f9] part of check-in [4271734aa3]
  • added EIndirectException for translating exceptions between contexts
  • this EIndirectException will be used to handle background exceptions for feature request [68337ae98a]
(user: abouchez branch: trunk)
2013-07-03
12:21
[11e0d7e4fb39f714] part of check-in [5b95e24168] fix FPC compilation issue (user: abouchez branch: trunk)
2013-07-02
09:33
[35c1cace86db63d1] part of check-in [1e0ead2c47] fixed TDynArray.AddArray() method when Count parameter is not specified + added associated regression tests (user: abouchez branch: trunk)
2013-07-01
06:59
[27ae9732d7a627c6] part of check-in [acad52fac1] function ReplaceParamsByNames() won't generate any SQL keyword parameters (e.g. :AS :OF :BY), to be compliant with Oracle OCI expectations (user: abouchez branch: trunk)
2013-06-20
06:33
[39c04601d3998090] part of check-in [f41dd910fe] FastCode-based x86 asm Move() procedure will handle source=dest (user: abouchez branch: trunk)
2013-06-14
14:48
[0e8e51b9fa3f59d0] part of check-in [f0763f38de] introducing FireDAC / AnyDAC support for mORMot, including Array DML for high-speed process (user: abouchez branch: trunk)
2013-06-12
15:11
[0feebd647d75d9af] part of check-in [2b36a261a2] let TDynArray.LoadFrom() accept Win32/Win64 cross platform binary content (user: abouchez branch: trunk)
2013-05-28
08:58
[4e19ae41f741cbd7] part of check-in [930789bc74] fixed ticket [a516b1a954] about ptOneFilePerThread log file rotation (user: ab branch: trunk)
2013-05-23
08:07
[c7add08111cf4895] part of check-in [be91367e37] re-enable stack trace logging when an exception is intercepted (fix regression introduced recently) (user: abouchez branch: trunk)
06:54
[406defa1ddab6554] part of check-in [31787b3495] faster PosEx() function in pure pascal mode (based on Avatar Zondertau work) - latest commit did not include the modification :) (user: abouchez branch: trunk)
06:39
[749146fc32ee7165] part of check-in [4f4c1de9a2] fixed compilation issue on newer Delphi versions (user: abouchez branch: trunk)
2013-05-17
13:40
[c15c40d180697ed9] part of check-in [5576ff2f04] added TRawUTF8DynArrayFrom(const Values: array of RawUTF8) function (user: abouchez branch: trunk)
2013-05-16
14:23
[736dcd387f608a3e] part of check-in [d5e77d3d47] removed several compilation hints when assertions are set to off (user: abouchez branch: trunk)
2013-05-15
14:52
[f094e74cbcf49b73] part of check-in [108e9e9b9d] fixed TTextWriter.AddFloatStr() method when processing '-.5' input (used e.g. by SynDBOracle unit) (user: abouchez branch: trunk)
08:27
[df935cff9429223e] part of check-in [59eb20700d] Delphi XE4 compatibility (Windows target platform only for Win32/Win64) (user: abouchez branch: trunk)
2013-05-06
13:39
[541108b99b200c9c] part of check-in [cc70130302] EOleSysError.ErrorCode property will now be logged explicitly, if available (user: abouchez branch: trunk)
2013-04-25
13:59
[d81277e9793cda48] part of check-in [25c4a41688] enhanced .Net/CLR unhandled exceptions recognition (user: abouchez branch: trunk)
2013-04-24
12:23
[43853690735e22d9] part of check-in [df01125af9] fixed UTF8ToWideChar() functions to always append a WideChar(0) to the end of the destination buffer, even if returned length is 0 (user: abouchez branch: trunk)
2013-04-23
13:47
[55f6d6ba567c401f] part of check-in [eef0d20759] fixed ticket [815facfe57] in UTF8ILComp() function, including corresponding regression tests for both UTF8ILComp() and UTF8IComp() (user: abouchez branch: trunk)
2013-04-21
07:41
[a0097cc0829499d6] part of check-in [4e8cd5a87a] fixed process with Unicode content for mORMotVCL unit (user: ab branch: trunk)
2013-04-19
06:30
[d41a81d6ca0385e4] part of check-in [c753608d75] added TSQLTable.GetSynUnicode() method (user: abouchez branch: trunk)
06:10
[0a93789835177f4a] part of check-in [37fdd6baa6] fixed ticket [1c940a4437] to avoid negative value in TPrecisionTimer.PerSec, in case of incorrect Start/Stop methods sequence (user: abouchez branch: trunk)
2013-04-16
15:18
[8de80855a1eef2a9] part of check-in [b79cd266e1] added GarbageCollectorFreeAndNil() procedure to handle global variables proper finalization to nil - avoid error [8e3073c8c7] and [8546b4af1d] e.g. when used as design package in Delphi IDE (for all globals and class VMTs) (user: abouchez branch: trunk)
2013-04-15
20:56
[b5002ee991372cb5] part of check-in [7806ffbc88] new DateToSQL() overloaded function with direct Year/Month/Day parameters (user: ab branch: trunk)
11:22
[ccce5bc4fe640977] part of check-in [12caf98fc3] fixed ticket [355249a9d1] about potential endless loop in TTextWriter.AddJSONEscapeW() (user: abouchez branch: trunk)
2013-04-12
13:55
[8478b053a8e0b551] part of check-in [2e0238916f]
  • added DefaultSynLogExceptionToStr() function and TSynLogExceptionToStrCustom variable, and ESynException.CustomLog() method to customize how raised exception are logged when intercepted - feature request [495720e0b9]
  • fixed .NET/CLR external exceptions logging (were not recognized)
(user: abouchez branch: trunk)
2013-04-11
06:39
[076c4d78a4566511] part of check-in [acad1ccad0] fixed ticket [388c2768b6] about unreproduced overflow in TTextWriter.AddJSONEscapeW() (user: abouchez branch: trunk)
2013-04-10
14:57
[baf515dfae11d2c8] part of check-in [ffedd81f5b] let internal high resolution timing of SynDBOracle queries be displayed (alignment issue of TPrecisionTimer structure!) (user: abouchez branch: trunk)
2013-04-06
19:04
[63332ddc49d082c4] part of check-in [e09e400b5a] added TTextWriter.AddTypedJSON() method (user: ab branch: trunk)
2013-04-03
17:07
[3307d5b496144f5b] part of check-in [45ddc6cb89] fixed ticket [01408fd389] in TRawUTF8List.GetText() (user: abouchez branch: trunk)
2013-03-29
11:34
[92231fe6c3c6b461] part of check-in [38f27c96d6] added TSynTestCase.CleanUp virtual method for proper cleaning before Destroy (user: abouchez branch: trunk)
2013-03-28
15:13
[89e88893c75a3687] part of check-in [7c303b8b38] fixed issuse in function FastFindIndexedPUTF8Char() (user: abouchez branch: trunk)
13:50
[f81d398386714612] part of check-in [d3db8d6937] added QuickSortIndexedPUTF8Char() and FastFindIndexedPUTF8Char() functions (user: abouchez branch: trunk)
06:49
[ed33d8b352be272e] part of check-in [1386178766c] included more detailed information to HTTP client User-Agent header (user: abouchez branch: trunk)
2013-03-27
15:24
[18a9fb6111a98fda] part of check-in [8978dffc0d]
  • introduced TSynInvokeableVariantType.Clear() and Copy() default methods
  • internal DispInvoke() function speed-up by caching the latest accessed type
  • several TSynTableFieldProperties speed up, when working with variants
(user: abouchez branch: trunk)
2013-03-26
12:30
[0d843d4e48c57803] part of check-in [76bdb18833] fixed LVCL compilation (user: abouchez branch: trunk)
09:59
[4f4eb51b3e059c5c] part of check-in [a8983200d3] SynDBOracle will search for OracleInstantClient\oci.dll in executable sub-folder (can be used e.g. for Win64) (user: abouchez branch: trunk)
08:21
[43cec8b1ca0f13a1] part of check-in [9211fe92a3] updated Release Notes tool (user: abouchez branch: trunk)
2013-03-25
19:53
[2050d5c38544d54f] part of check-in [53fcf87b33] updated documentation about logging rotation feature (user: abouchez branch: trunk)
19:40
[c92614e04450ed04] part of check-in [c26f17286d] introducing TSynLogFamily.RotateFileCount and RotateFileSizeKB properties, to enable log file rotation and SynLZ compression - request [72feb66d45] (user: abouchez branch: trunk)
2013-03-23
09:01
[073f14e61824a109] part of check-in [3489a1a0c2] fixed some borderline issues when using GET data paging parameters (user: ab branch: trunk)
2013-03-21
14:17
[55078b4b31983dea] part of check-in [3e4170c429] TSynTableStatement.Create() SQL statement parser will handle optional OFFSET clause (in new FoundOffset integer property), and "SELECT Count(*) FROM TableName WHERE ..." statement (user: abouchez branch: trunk)
2013-03-19
16:24
[ed97686178ed5667] part of check-in [900703f728]
  • "rowCount":... field will now be generated even for 0 and 1 values, to ensure perfect consistency when consummed from an AJAX request;
  • TSQLPropInfoList search by field name will use fast binary search instead of O(n) linear search
(user: abouchez branch: trunk)
10:30
[9e425bd7b271d2a1] part of check-in [17de062f9b] added TJSONWriter.EndJSONObject() method, for writing an optional ',"rowCount":' field in non expanded mode - used for all JSON creation (user: abouchez branch: trunk)
07:32
[910c77e29d11cffa] part of check-in [a5b1a96ed2] fixed potential memory leak in TSQLTable.ToObjectList if the destination TObjectList is not void (user: abouchez branch: trunk)
2013-03-17
18:14
[aed452df1ebee8d5] part of check-in [c0a7845b09] preparing TSynLogFamily rotation parameters (no implementation yet - just properties) (user: ab branch: trunk)
08:57
[1b36597fe6a8c097] part of check-in [806aa776f0] included Windows-1258 code page to be recognized as a fixed-width charset (user: ab branch: trunk)
2013-03-15
13:57
[15134df5766dabee] part of check-in [7bef60c27c] minor syntax and comment changes of x64 move() and fillchar() assembler code (user: abouchez branch: trunk)
2013-03-14
15:21
[da1a52d444b90268] part of check-in [83eb0ceafb] bottom buttons use better looking TButton component (user: abouchez branch: trunk)
09:58
[a01680e149e27691] part of check-in [b403a60795]
  • added IsHTMLContentTypeTextual() function, and modified ExistsIniNameValue()
  • fixed Delphi 6 compilation issue
(user: abouchez branch: trunk)
08:19
[f43d4dde9a8479d4] part of check-in [017e29c6a8] delete dead code in x64 asm move() version (user: abouchez branch: trunk)
2013-03-13
14:28
[282e5b74486eb434] part of check-in [d6a8515e4c] enhanced FillChar() x64 assembler for Count in 0..32 bytes (user: abouchez branch: trunk)
11:00
[25bd3de116ff27ba] part of check-in [c8a4ceb2c3] included x64 optimized asm of FillChar() and Move() for Win64 - Delphi RTL will be patched at startup, unless the NOX64PATCHRTL conditional is defined (user: abouchez branch: trunk)
2013-03-12
14:24
[6281d4cc1e890320] part of check-in [1e3c108122] fixed Delphi 5 compilation issue (user: abouchez branch: trunk)
12:56
[04c7afa5069ba32a] part of check-in [d7e4c6d814] procedure ConsoleWaitForEnterKey will wait for the ENTER key to be pressed, processing the internal GDI message loop and any Synchronize() pending notification - to be used e.g. for proper work of console applications with interface-based service implemented as optExecInMainThread (user: abouchez branch: trunk)
12:24
[633f29f5d3e37b08] part of check-in [b0f13e36a1] TextColor() and TextBackground() will now initialize internal console process after any manual AllocConsole call (user: abouchez branch: trunk)
2013-03-11
16:35
[ff047f69951aeb7e] part of check-in [586a7a93d8] added PtrUIntScanIndex() function (user: abouchez branch: trunk)
09:39
[d54e33acee35dbf6] part of check-in [c057796e4c] added IsEqual(const A,B: TSQLFieldBits): boolean function (user: abouchez branch: trunk)
2013-03-07
15:36
[3076def55afa1d96] part of check-in [5f6ff69aa3] full Windows 64 bit compatibility of all mORMot core units, including ORM and services - implements tickets [903a0dcb82], [6f510d8578], [a52be8f4a3], [f2133fcd62], and most part of [fb893df6fe] (user: abouchez branch: trunk)
2013-02-28
14:02
[7cc3cba57c0533ee] part of check-in [59faf6b192] enabled exception logging in Win64 (user: abouchez branch: trunk)
09:34
[290c9245d01f9e8f] part of check-in [beda33419e] added TTextWriter.AddDynArrayJSON() overloaded method and new function DynArrayLoadJSON() to be used e.g. for custom record JSON serialization, within TDynArrayJSONCustomReader/TDynArrayJSONCustomWriter callbacks (user: abouchez branch: trunk)
2013-02-25
16:41
[9d3d304237bf1546] part of check-in [d650255b84] fixed ticket [cce54e98ca] about overflow in TTextWriter.AddJSONEscapeW() (user: abouchez branch: trunk)
10:16
[37718761cb21392c] part of check-in [de61986540] fixed TTextWriter.RegisterCustomJSONSerializer() method when unregistering (user: abouchez branch: trunk)
09:59
[78d30c76eec8a2a9] part of check-in [746545bcd5] SynBigTable unit fixed and tested with Delphi XE2/XE3 64-bit compiler (user: abouchez branch: trunk)
2013-02-24
16:18
[ec3eb36fbeb6786f] part of check-in [b678666282] fix GPF introduced with latest commit for Delphi <2007 (user: User branch: trunk)
15:43
[dbe36b880e59296c] part of check-in [dc441f2a68] fixed and tested 64 bit compilation under Windows with Delphi XE3 - first step, including SynCommons and low-level process [4b11d85be2] (user: User branch: trunk)
2013-02-19
14:12
[c07ce2bb287c8ad9] part of check-in [a0d92dfc7d] get rid of unexisting limit 'Too many :(): params' (user: abouchez branch: trunk)
09:13
[b0cb9d8b978a90cf] part of check-in [d20f50f31f] fixed Delphi 5 compilation issue (user: abouchez branch: trunk)
2013-02-16
11:58
[a7ab1578a3aec29d] part of check-in [e40d9d5a49] fixed function GotoNextJSONObjectOrArray() about not handling properly null values (user: ab branch: trunk)
2013-02-14
16:47
[6d85771f4fdfa514] part of check-in [dfd417ced0] added JSON_CONTENT_TYPE_HEADER constant (user: abouchez branch: trunk)
07:49
[a1cb4d6d191a3167] part of check-in [b7bef76c4a]
  • SQLParamContent() / ExtractInlineParameters() functions moved from mORMot.pas (now properly handles SQL null and more than MAX_SQLFIELDS parameters)
  • introducing TSQLParamType / TSQLParamTypeDynArray generic parameters
(user: abouchez branch: trunk)
2013-02-12
17:00
[9a3f0d2747677b4f] part of check-in [ee4c1ea74a] huge enhancements of the SynDB layers, with ZEOS and UniDAC support (user: abouchez branch: trunk)
09:22
[c8ed9c2ce5b15ae8] part of check-in [e16a4c15ec] fixed some rounding issue during double to text conversion if EXTENDEDTOSTRING_USESTR is defined (e.g. for Delphi 6 or LVCL/FPC) (user: abouchez branch: trunk)
2013-02-11
17:13
[e9e4dae8c17097a4] part of check-in [7701911aa3] fixed issue in TSynLog.LogLines() method (user: abouchez branch: trunk)
12:51
[1c32f59e67ab2ba0] part of check-in [cae1e62539] fixed rouding issue e.g. for ExtendedToString(double(22.99999999999997)) (user: abouchez branch: trunk)
2013-02-09
14:45
[a195dac1a225baad] part of check-in [495a1363ed] added SynDBZEOS.pas unit - to be used with Zeos 3.x version of the components (user: ab branch: trunk)
2013-02-08
19:57
[bdf31216a2563b22] part of check-in [f003238026] fixed several compilation issues on newer versions of Delphi (user: ab branch: trunk)
13:10
[6ecab0e62e0ea2eb] part of check-in [9e89095221] fix compilation issue with Delphi 2007+ versions (user: abouchez branch: trunk)
11:02
[e59e7fd679f508ac] part of check-in [6edbf43065] fix potential file deletion error (user: abouchez branch: trunk)
2013-02-07
20:33
[a30a0924ff276564] part of check-in [dda2817c83] speedup of TTextWriter.AddAnsiString() method + added DirectoryDelete() function (user: abouchez branch: trunk)
2013-02-06
10:17
[c5fade5477ecebf1] part of check-in [53f94a5deb] fix a potential endless loop in case of malformated UTF-8 content (user: abouchez branch: trunk)
10:02
[5436559cb24bd8ed] part of check-in [c773b23024] UTF-8 decoding process will now identify any invalid leading byte, and report the error as expected - ticket [4a0382367d] could probably be closed (user: abouchez branch: trunk)
09:50
[1a4f08a44773e7d7] part of check-in [ac2463403c] UTF-16 surrogates are now handled everywhere in SynCommons.pas (user: abouchez branch: trunk)
2013-02-05
16:14
[37a794a5a3df76cb] part of check-in [b18d47257d] UTF-8 process will now handle UTF-16 surrogates - see ticket [4a0382367d] - UnicodeCharToUTF8() is renamed WideCharToUTF8() and a new UTF16CharToUTF8() function has been introduced (user: abouchez branch: trunk)
2013-02-03
17:25
[84c69d549d695e67] part of check-in [f5c276f946] fixed ticket [19e567b8ca] about TSynLog issue in heavily concurrent mode (user: ab branch: trunk)
2013-02-02
09:07
[a6f1d43bc515faae] part of check-in [1ccd749af4] fix Delphi 2007+ compilation issue (user: ab branch: trunk)
2013-02-01
20:16
[0261ec03b67ac82a] part of check-in [19a0600e93]
  • added TextColor() and TextBackground() functions
  • TSynTests will now write the tests summary with colored console output
  • introducing new TTextWriterEcho class, dedicated to row text multicast
  • introducing TSynLogFamily.EchoToConsole: TSynLogInfos property, able to optionally echo the process log to the current console window, using colors (used e.g. in sample "14 - Interface based services\Project14ServerHttp.dpr")
  • fixed potential GPF in function UrlDecodeNeedParameters()
(user: abouchez branch: trunk)
2013-01-30
12:16
[33f90f18e88f5721] part of check-in [f2733cdb53]
  • added TSQLRestClientURI.LastErrorCode/LastErrorMessage/LastErrorException properties, to retrieve additional information about remote URL() execution
  • exposed StatusCodeToErrorMsg() function
(user: abouchez branch: trunk)
2013-01-23
20:22
[a6d74d7d29e5ed42] part of check-in [676df50744] SynDBFirebird is now able to connect to a Firebird DB, and let Firebird Embedded library create a new database file if it does not exist yet (user: abouchez branch: trunk)
2013-01-22
20:41
[d6a7c82a1e2b2011] part of check-in [ae60866540] fixed memory leak introduced by the latest commit (user: abouchez branch: trunk)
16:52
[94d9c697af16e0eb] part of check-in [9aabf519e0] added optional aOwnObjects: boolean parameter to TRawUTF8List.Create() constructor to manage Objects[] instance life-time (user: abouchez branch: trunk)
09:40
[485725f0baf35a68] part of check-in [4fb6f245e2] added Utf8DecodeToRawUnicodeUI() overloaded function returning text as var (user: abouchez branch: trunk)
2013-01-19
09:02
[388e8d723e90ff22] part of check-in [c559aa5e3e]
  • added function JSONRetrieveStringField() for retrieval of a string field name or value from JSON buffer
  • several speed optimization in JSON parsing
(user: ab branch: trunk)
2013-01-18
16:36
[8853c0427e24b051] part of check-in [730c07e487]
  • new TJSONSerializer.RegisterCollectionForJSON() method, to register a TCollection/TCollectionItem pair and allow JSON serialization of any "plain" collection - may be a good alternative to TInterfacedCollection
  • new overloaded ClassInstanceCreate('ClassType') function allowing to create an object instance from its type name
(user: abouchez branch: trunk)
07:40
[e81c149baab47b9c] part of check-in [ac654aa27b] fixed TSQLRestServerCallBackParams.Returns() method not setting the header content as expected (user: abouchez branch: trunk)
2013-01-17
07:52
[a4513745ceea6a1e] part of check-in [0b7919bbdc] BREAKING CHANGE of TTextWriter/TJSONWriter.WriteObject() method and ObjectToJSON() function: serialization is now defined with TTextWriterWriteObjectOptions set - therefore, TJSONSerializerCustomWriter callback signature changed. (user: abouchez branch: trunk)
06:51
[9c1c9b05f02cb7d7] part of check-in [a4e31bde6d] initialization code refactoring (user: abouchez branch: trunk)
2013-01-16
19:02
[3c2afa2db1aa5b08] part of check-in [107a42c78c] fixed Delphi 2007+ compilation issues (user: ab branch: trunk)
16:47
[9ad2477419186c13] part of check-in [2d128e3c4c] some code refactoring (user: abouchez branch: trunk)
2013-01-14
12:47
[784fabe7e5c52d06] part of check-in [9ca4418caa]
  • function GotoNextJSONField() renamed GotoNextJSONItem(), and fixed to handle nested JSON array or objects in addition to string/numbers
  • added function JSONDecodeIDField() for fast retrieval of a "ID":.. value
(user: abouchez branch: trunk)
2013-01-08
17:02
[6c2d9d11d3880b5e] part of check-in [f049f54313] oups... I did it again... :) (user: abouchez branch: trunk)
16:22
[d667b143e5121742] part of check-in [d6fb701d51] fixed Unicode Delphi compilation issue (user: abouchez branch: trunk)
13:16
[e3f3db56d11055bb] part of check-in [7ff2f00300] TDynArrayHashed is now a record with Delphi 2009+, due to a bug in latest version of Delphi compiler when using TDynArrayHashed = object(TDynArray) (user: abouchez branch: trunk)
2013-01-02
17:35
[cf56c9938d9f10e9] part of check-in [6e0f23a089] fixed compilation issue with newerversions of Delphi (user: ab branch: trunk)
15:51
[6c7d547c4829e8c4] part of check-in [9c9d6ebb2a] fixed ticket [540628f498] about 64bit code adjustments, Assert(Sizeof(...),...) (user: abouchez branch: trunk)
14:19
[3be803ab3c710f19] part of check-in [ba0438e17f] enhanced FPC/Lazarus Win32/Win64 compilation (user: abouchez branch: trunk)
13:05
[20af5ab66938cb56] part of check-in [d4d2fd3b10] fixed ticket [2bcf9c93c3] wrong pointer is provided to FreeEnvironMentStringsA (user: abouchez branch: trunk)
09:29
[59f40db22dd6bc27] part of check-in [7abc54fca2] some code adaptation for FPC compilation (user: abouchez branch: trunk)
2013-01-01
18:04
[b7e2781b0e0f0ca7] part of check-in [4e471e7925] fixed GPF issue when raising an Exception (user: ab branch: trunk)
2012-12-31
14:34
[0ee648b9d1c06736] part of check-in [8e74517c2d] preparing new Year's eve ;) (user: ab branch: trunk)
2012-12-30
19:52
[d51a3a8bf15430e0] part of check-in [7ec13478e7] fixed ticket [ad55566b10] about JSON string escape parsing (user: ab branch: trunk)
2012-12-15
12:41
[1802c8441aa802a7] part of check-in [7923a74dbd]
  • confusing-named RoundTo2Digits() function renamed into Trunc2ToDigit()
  • added simple, non banker rounding SimpleRoundTo2Digits() function
(user: ab branch: trunk)
2012-12-14
06:55
[65624d3de42c073d] part of check-in [f443084cee] fixed Unicode compilation issues (user: ab branch: trunk)
2012-12-13
20:28
[76a1cfb2e310b77f] part of check-in [7e1bdd7e93] if new property TSynLogFamily.PerThreadLog is set to ptIdentifiedInOnFile, a new column will be added for each logged row - LogViewer has been updated to allow easy and efficient multi-thread process logging (user: abouchez branch: trunk)
2012-12-12
14:23
[c740453ae28f0317] part of check-in [cb836954c5]
  • TSynLog header now contains system environment variables (and LogViewer tool has been updated to handle it)
  • introducing TSynLogFamily.StackTraceUse: TSynLogStackTraceUse property
(user: abouchez branch: trunk)
2012-12-11
13:20
[a95505dfd2b83c8f] part of check-in [d2bab10f61] committed some code fix with which setting NOEXCEPTIONINTERCEPT is compiling (user: abouchez branch: trunk)
12:20
[4327fb8d28a0ab61] part of check-in [12b3ab6c7f] fixed potential comparison error in TSynTableFieldProperties.SortCompare() when sorting UTF8 Field with tfoCaseInsensitive in Options (user: abouchez branch: trunk)
2012-12-10
16:18
[05fa91061b6df2d1] part of check-in [d603a32c21]
  • added optional TextTruncateAtLength parameter for TSynLog/ISynLog.Log()
  • refactoring of the logging process in mORMot.pas
(user: abouchez branch: trunk)
2012-12-08
19:45
[7fbe7dfdc590d621] part of check-in [d4b4f719de] new TSQLRestServerCallBackParams.Input*[] properties, for easy URI parameter retrieval at server-side method-based service implementation - also updated documentation and associated blog article (user: ab branch: trunk)
17:51
[9ad17249206efe6f] part of check-in [863cb94dfb]
  • added UrlDecodeNextValue() and UrlDecodeNextNameValue() functions
  • introducing ForceStringAs: TReturnedStringType parameter in VariantLoadJSON() or GetVariantFromJSON() functions
(user: ab branch: trunk)
2012-12-07
17:47
[e0a5e8eebe945acd] part of check-in [0894f8fc25] fixed Delphi 2007+ compilation (user: abouchez branch: trunk)
17:08
[a8dfba251afaf22e] part of check-in [b61f3fb992] added an alternative way of implementing callbacks, using variants, in addition to the previous (and faster) JSON array based possibility (user: abouchez branch: trunk)
16:49
[f42025a64bd80156] part of check-in [db0c5a4b97]
  • better variant process, especially in JSON serialization, and introducing Escape: TTextWriterKind kind of parameter
  • added RawUnicodeToUtf8() overloaded procedure
(user: abouchez branch: trunk)
2012-12-06
13:49
[fe534e0f30421f19] part of check-in [d2bc05859c] fixed ticket [fdc1764f97]: GPF issue in TSQLRestServer.LaunchCallBack() and enhance exception handling and JSON/HTML error messages return (user: abouchez branch: trunk)
2012-12-03
13:09
[5470ac2fee9faeb1] part of check-in [f9bcf462f5] fixed Delphi 5 compilation (user: abouchez branch: trunk)
2012-12-02
18:50
[8033986339259cb7] part of check-in [49462603c9] enhanced variant support and documentation (e.g. in RecordLoad/RecordSave - still testing and dynamic arrays to process) (user: ab branch: trunk)
2012-11-30
20:22
[a17c0acd0e7cba6b] part of check-in [8630339e39] added VariantToUTF8() overloaded functions for fast conversion of variant data (user: abouchez branch: trunk)
18:03
[afe23aa5448d6b96] part of check-in [f4e532be25] .NET/CLR external uncaught exceptions will now be logged with their C# type name (user: abouchez branch: trunk)
2012-11-28
13:34
[8f538140b1de19a5] part of check-in [1c6fe7a1fd] 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 (user: abouchez branch: trunk)
2012-11-22
15:58
[3d1406b7230b9a07] part of check-in [525606485c]
  • fixed issue in case of GetTickCount() value change
  • official version updated to 1.18
(user: abouchez branch: trunk)
2012-11-21
14:49
[c746195b0cc872a5] part of check-in [2c4dbea180]
  • added new overloaded VariantToJSON() function and procedure, accepting a RawUTF8 parameter
  • added regression tests for variants parameters in interface-based services
(user: abouchez branch: trunk)
2012-11-15
14:10
[4025e96380568851] part of check-in [3ec6569d17] fixed another Unicode related issue (user: abouchez branch: trunk)
13:24
[17e914c05b221734] part of check-in [950480023e] fixed Unicode compilation issues (user: abouchez branch: trunk)
2012-11-14
16:07
[34fa4d8d1165890c] part of check-in [e2225d2691]
  • fixed function GetJSONField() to properly decode JSON number with exponent
  • handle variant serialization in/from JSON using new VariantLoadJSON() VariantSaveJSON() functions and TTextWriter.AddVariantJSON() method
  • handle binary serialization of variant via FromVarVariant() procedure and TFileBufferWriter.Write() TFileBufferReader.ReadVariant() methods
(user: abouchez branch: trunk)
2012-11-12
13:52
[b78077d337c9e266] part of check-in [cb8f723446] fixed IdemPChar() in pure pascal to behave like the asm version (i.e. if up parameter is nil, will return TRUE) (user: abouchez branch: trunk)
2012-11-05
21:31
[544fa76d01a94407] part of check-in [fd12ca0082] introducing smvVariant kind of parameter for interface-based services (user: ab branch: trunk)
21:14
[762217e78bfe412f] part of check-in [318defb7a6] several minor implementation speed-ups (user: ab branch: trunk)
20:48
[730abe86e6e963d6] part of check-in [9b419ae58f]
  • added TTextWriter.AddJSONEscapeAnsiString() method
  • handle variant serialization in/from JSON using new VariantLoadJSON() function and TTextWriter.AddVariantJSON() method
  • fix potential GPF in function GetJSONField()
(user: ab branch: trunk)
2012-10-28
09:06
[9acfb57dff9e9648] part of check-in [6226ec0b74] new two BinaryToText/TextToBinary protected methods allowing custom storage of binary content as text (user: ab branch: trunk)
2012-10-26
10:08
[f8b2d906a3c2b27e] part of check-in [5c3aa1729c] declared TSynLog.LogInternal() methods as virtual - request [e47c64fb2c] (user: abouchez branch: trunk)
10:03
[13ea55d3a78fcb24] part of check-in [79546deff4] 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 (user: abouchez branch: trunk)
2012-10-20
07:20
[dda4e7b8a2bce1c3] part of check-in [79a1f3f676] fix several Delphi 2009+ compilation issues (user: ab branch: trunk)
2012-10-19
18:33
[97f0b90b7a4cdeed] part of check-in [04159fda24] added ShortStringToAnsi7String() and UpperCopyWin255() functions (user: abouchez branch: trunk)
2012-10-17
11:31
[6fee2df9d95bf95d] part of check-in [eaf5da8348]
  • 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
(user: abouchez branch: trunk)
2012-10-16
12:49
[4de32042409e5d24] part of check-in [f8dac6147e] speed up of TDynArrayHashed hashing process (user: abouchez branch: trunk)
2012-10-12
22:35
[0348f64b191e901a] part of check-in [3db2c54da3]
  • added TInterfaceStub.ExpectsCount() methods - to be used mainly for mocking interfaces
  • several fixes and enhancements of implementation and tests
(user: ab branch: trunk)
22:16
[badc28a91d65bc97] part of check-in [67660b261f] added RecordSaveJSON() function which follows TTextWriter.AddRecordJSON() format (user: ab branch: trunk)
13:34
[5c9bd427cb602c41] part of check-in [32a2620f68]
  • added JSONEncodeArrayOfConst() function
  • added TTextWriter.AddVoidRecordJSON() method
(user: abouchez branch: trunk)
2012-10-06
14:48
[08add708817ee79b] part of check-in [07ae52f42e] Windows Server 2012 recognition (user: ab branch: trunk)
2012-10-03
16:49
[a0de60138d3aced4] part of check-in [2827c5ef0a] added additional testing (user: abouchez branch: trunk)
16:43
[8bf64e51f3e4c0e6] part of check-in [99078aac10] added un-hashed TDynArray test with high numbers of items (user: abouchez branch: trunk)
15:27
[2cb60842ef3d8c87] part of check-in [89d356e6bf]
  • 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)
(user: abouchez branch: trunk)
09:41
[2145e462dd14b75c] part of check-in [fce3d3a13d] fixed potential GPF in TRawUTF8List.SetTextPtr() - ticket [d947b36cf9] (user: abouchez branch: trunk)
2012-10-02
08:39
[373eee808c493648] part of check-in [ed47f5df1e] added faster TTextWriter.SetText() method in conjuction to Text function (user: abouchez branch: trunk)
08:03
[42302578c4198664] part of check-in [743e0f054b] added TDynArray.ElemPtr method (user: abouchez branch: trunk)
2012-09-28
06:07
[ab955661eb3fc0a4] part of check-in [522c74d469] force TOracleDate.ToDateTime to ignore any date before 30 Dec 1899 (i.e. any TDateTime result < 0), to avoid e.g. wrong DecodeTime() computation from retrieved value (user: abouchez branch: trunk)
2012-09-27
09:36
[09a9868d2b418175] part of check-in [87c570c277] added RemoveCommentsFromJSON() procedure and associated regression test - from MPV proposal (user: abouchez branch: trunk)
2012-09-24
12:22
[4a01ce2398ce8f35] part of check-in [70627d5ba7]
  • now FileSize() function won't raise any exception if the file does not exist
  • added TSynNameValue.InitFromIniSection() method
  • added TSynLog/ISynLog.LogLines() method for direct multi-line text logging
(user: abouchez branch: trunk)
2012-09-18
07:04
[83cfe3c0de07e488] part of check-in [f132747f92]
  • 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
(user: abouchez branch: trunk)
2012-09-11
09:30
[011fb6916da44508] part of check-in [ca97a46a41] 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 (user: abouchez branch: trunk)
2012-09-10
13:20
[e829e58626fe28d5] part of check-in [fbe1b2711e] refactored function GetMimeContentType() implementation + associated tests (user: abouchez branch: trunk)
2012-09-02
10:26
[e0180a066a3f9963] part of check-in [e4b19dfe78] added Iso8601ToSQL() function in addition to DateToSQL() and DateTimeToSQL() (user: ab branch: trunk)
10:13
[12acbf95d580484a] part of check-in [45a02d8b80] fixed ticket [28c616daff] - changed part of GetMimeContentType function to correctly handle html,htm,css,js,ico file types (user: ab branch: trunk)
2012-08-31
14:47
[a1a76d5cc61bc412] part of check-in [0273033f77] DateToSQL() and DateTimeToSQL() functions, and associated JSON_SQLDATE_MAGIC prefix are now part of SynCommons, since can be used outside mORMot content, e.g. in SynDB.pas (user: ab branch: trunk)
2012-08-29
15:50
[64e46fb61e7cc955] part of check-in [9422fb8309] fixed several LVCL and Delphi 5 compilation issues (user: ab branch: trunk)
2012-08-28
13:44
[90b99d80a60c13d6] part of check-in [608399a061] fixed potential Integer Overflow error in Iso8601ToDateTimePUTF8Char*() (user: ab branch: trunk)
2012-08-27
16:50
[dd98fae4855eddec] part of check-in [2f7387fcd1] fixed wrong UTF-8 encoding of U+FFF0 used for JSON_BASE64_MAGIC (user: ab branch: trunk)
2012-08-24
14:39
[3b943f1eb902f335] part of check-in [7570d9db55] enhanced MySQL back-end compatibility + code refactoring about DBMS handling (user: ab branch: trunk)
12:25
[ed254f1dc618efb7] part of check-in [55d594e71e] enhanced TSQLDBStatement.BindVariant() to avoid most temporary conversions to string (user: ab branch: trunk)
2012-08-22
12:32
[fa8e90b951d422dc] part of check-in [99153577b3] new StrToCurrency() wrapper function (user: ab branch: trunk)
2012-08-21
14:39
[49af20b0bb350a99] part of check-in [2ffa10011a] convert most definition of deprecated "object" into "record", when possible, for latest versions of Delphi (user: ab branch: trunk)
2012-08-20
13:00
[9fa7ce3d55a26f18] part of check-in [275c27a721]
  • fixed regression issue introduced with resolution of ticket [e5ad3684b2] about some .map files parsing in TSynMapFile: no source code line where added in the .log file any more
  • TSynLog stack tracing uses low-level RtlCaptureStackBackTrace() API on CPU64
(user: ab branch: trunk)
2012-08-17
14:28
[22e2fdbf69888da4] part of check-in [8ee15b5130]
  • fixed ticket [8dc4d49ea9] in TSQLDataBase.GetFieldNames()about result array truncated to 64
  • fixed non created index issue in TSQLRestServer.CreateSQLMultiIndex()
(user: ab branch: trunk)
08:46
[0e6995a5dba2f48e] part of check-in [ee05c34780]
  • fixed compilation issue with Delphi >= 2007
  • added djPointer and djObject TDynArrayKind aliases
(user: ab branch: trunk)
2012-08-16
15:49
[25c6c40e3f668500] part of check-in [0fd8abdf9f] added TDynArray.InitSpecific() method able to specify how comparison should be processed for a given record (user: ab branch: trunk)
15:08
[928814fa1a8ebed7] part of check-in [31d8d92795] new TDynArrayHashed.InitSpecific() method able to specify how hashing and comparison should be processed for a given record (+ TDynArray refactoring) (user: ab branch: trunk)
09:11
[12f30aaca0f931c5] part of check-in [0d42fa64d2]
  • added PatchCode() and RedirectCodeRestore() procedures, and some code refactoring about process in-memory code patching
  • internal FillChar() will now use faster SSE2 instructions on supported CPUs
(user: ab branch: trunk)
2012-08-14
15:42
[11f5577fbc3253c4] part of check-in [2aef680e70] fixed ticket [e5ad3684b2] about some .map files parsing in TSynMapFile (user: ab branch: trunk)
11:24
[3a3ffeb58f4b11c6] part of check-in [e6e8150754] increased internal units version to 1.17 (user: ab branch: trunk)
2012-08-10
09:04
[e510276ba3fbeae7] part of check-in [3efaf59e06]
  • introducing SynDBODBC working code, tested with ODBC Oracle provider :)
  • code refactoring of SynDB units, especially about error handling and ODBC integration
(user: ab branch: trunk)
2012-08-08
08:12
[eb3a3e6a1d8a76b5] part of check-in [6e75e7ff96]
  • fix LVCL compilation
  • fix Unicode compilation
(user: ab branch: trunk)
2012-08-07
17:16
[f970a2be0385affc] part of check-in [967322735e] fix issue about void string parameter binding (user: ab branch: trunk)
2012-08-03
18:45
[fc387a07e7b8c8a3] part of check-in [d51876633f] fix potential random issue in TObjectHash (and TListFieldHash), and some speed enhancment (user: ab branch: trunk)
05:48
[2ef3b7ee2e25763d] part of check-in [0dfada3aa2] fixed issue about BLOB unproperly serialized into JSON (e.g. now uses null) (user: ab branch: trunk)
2012-08-02
15:15
[599af562a57600e6] part of check-in [1ba3076a78] added TDynArray.Equals() method to compare two arrays efficiently (user: ab branch: trunk)
10:08
[8ae2c44cf6ac458a] part of check-in [ab4478695e] various fixes and speed-ups, especially in the TSQLRestServerStaticInMemory process (user: ab branch: trunk)
07:03
[96cbf6c20950447d] part of check-in [12adc904a4] speed enhancement of function UTF8ILComp() - used e.g. as default SYSTEMNOCASE collation in SQLite3 engine (user: ab branch: trunk)
06:05
[bb31071672c16bf0] part of check-in [d58847e512] new UTF8UpperCopy() and UTF8UpperCopy255() optimized functions (user: ab branch: trunk)
2012-08-01
15:24
[d422849c440e674b] part of check-in [9d2dddef27] new TObjectHash abstract class to use hashing to find an object (user: ab branch: trunk)
2012-07-27
14:57
[c68fa5324fb75e20] part of check-in [5713b98583]
  • new TMemoryMap.Map() method expecting a file name as parameter
  • new TRawUTF8List.LoadFromFile() method
(user: ab branch: trunk)
11:58
[e8b187178970aa83] part of check-in [2edda3889b] new TSQLRestServerStaticInMemory.ExpandedJSON property, and associated fixes to ensure the created JSON content is valid (user: ab branch: trunk)
2012-07-26
16:06
[417f010e101c8e5c] part of check-in [13815596dd] TTextWriter.AddJSONEscape() method speed up (user: ab branch: trunk)
09:32
[a2feb45cadd35537] part of check-in [f641049835]
  • 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
(user: ab branch: trunk)
2012-07-24
11:52
[a58fb87fcec66ff7] part of check-in [3cfd0c22ad] 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) (user: ab branch: trunk)
2012-07-23
11:58
[3dec57e8ce76dadf] part of check-in [c5e910961d] added EnsureUniqueTableInFrom parameter for function GetTableIndexFromSQLSelect) (user: ab branch: trunk)
2012-07-21
10:12
[72e72ee49735ffd9] part of check-in [5c08860c99] new GotoNextNotSpace() and GotoEndOfQuotedString() functions (user: User branch: trunk)
2012-07-20
16:14
[679b201cf6ca16a7] part of check-in [be6c892fea] added TSQLRestServerStatic.AdaptSQLForEngineList virtual method to handle most generic SELECT cases (overriden e.g. in SQLite3DB unit) (user: G018869 branch: trunk)
2012-07-19
13:09
[efcb2cb98968752e] part of check-in [a569ab8cca]
  • new SetInt64() procedure for direct assignment of the result
  • TSynTableStatement class now accepts '_' in table and column identifiers
(user: G018869 branch: trunk)
2012-07-18
15:57
[9b9ba7a0a7b40da5] part of check-in [d472f2ea3d]
  • 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
(user: G018869 branch: trunk)
2012-07-17
06:56
[e80355ca69c33206] part of check-in [a01eff7eb0] added TJSONObjectDecoder record/object helper for JSON object decoding (used e.g. by GetJSONObjectAsSQL() function, and for SQlite3DB process) (user: G018869 branch: trunk)
2012-07-16
15:01
[9a654f44c1609dcc] part of check-in [446c76a155]
  • 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
(user: G018869 branch: trunk)
2012-07-11
06:49
[a5e5f2cb2f9bdaad] part of check-in [01003b9517] now JSON parser will handle #1..' ' chars as whitespace (not only ' ') - just as expected by the specifications (user: G018869 branch: trunk)
06:14
[4ff1587db3885d7c] part of check-in [c8f19233cf] 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] (user: G018869 branch: trunk)
05:15
[74e9e8a06d451087] part of check-in [1080b93549] moved logging threadvars and associated structures into hidden internal declaration (i.e. implementation section), for better work with packages (avoid W1032 warning) (user: G018869 branch: trunk)
2012-07-06
15:42
[6cf82d90b83e8db0] part of check-in [7b08acb9d8] new SynUnicodeToUtf8(), StringToSynUnicode(), SynUnicodeToString() functions (user: G018869 branch: trunk)
2012-07-05
16:51
[ee62b0d9f7de2c90] part of check-in [c1be8cb9a1] enhanced TSynAnsiFixedWidth.UnicodeBufferToAnsi average process speed (user: G018869 branch: trunk)
2012-07-04
08:29
[7c906a2d90e54f31] part of check-in [75935462ce] 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. (user: G018869 branch: trunk)
2012-07-03
15:27
[1df30033694f68df] part of check-in [7bf4073f38] huge code refactoring and set of fixes, mostly related to:
  • Oracle handling of BLOB / CLOB fields and Unicode columns (NCLOB/NVARCHAR2)
  • mORMot access of external Oracle tables
(user: G018869 branch: trunk)
2012-06-27
08:59
[8d6b9f1366486581] part of check-in [64af6061d1] both TTextWriter.AddDateTime() overloaded methods will store '' when value is 0, or a pure ISO-8601 date or time if the value is defined as such, just as expected by http://www.sqlite.org/lang_datefunc.html - it will also reduce average generated JSON/text content size (user: G018869 branch: trunk)
2012-06-22
07:29
[74e31b027ee2f769] part of check-in [f78e6b717a]
  • enhanced function TSQLDBStatement.GetSQLWithInlinedParams about speed
  • TTextWriter.AddDateTime() method now can quote the output
(user: G018869 branch: trunk)
2012-06-21
12:33
[f606356279df03db] part of check-in [18f0d2c203]
  • fixed implementation issue in function FindNextUTF8WordBegin()
  • fixed false negative issue in TSynSoundEx.UTF8 and TSynSoundEx.Ansi
(user: G018869 branch: trunk)
2012-06-16
07:50
[7da5da145ba587a8] part of check-in [262f4c6c43] small enhancements for TObjectListHashed (user: User branch: trunk)
2012-06-15
18:27
[7084481d0bbe9f5f] part of check-in [1cb48bc7d2] Performance improvement: TObjectListHashed classes hashing will start only when List[] reachs 32 items (not worth it before) (user: G018869 branch: trunk)
15:50
[de99674db1df1caf] part of check-in [7d56e6b03a] added TObjectListPropertyHashed class, which allows hashing of a sub-property of an object (including some changes made to TDynArray/TDynArrayHashed) (user: G018869 branch: trunk)
2012-06-14
17:07
[ed87b698f50c42a1] part of check-in [91b87e4a4d] added TObjectListHashed class, which behaves like TList/TObjectList, but will use hashing for (much) faster IndexOf() method (user: G018869 branch: trunk)
2012-06-13
12:43
[ec87929ff009c641] part of check-in [c2dfe98bce]
  • 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
(user: G018869 branch: trunk)
2012-06-12
11:16
[9b8f214a32dbcf47] part of check-in [4e1fd44b61] handle properly old .synlz layout (reading compatibility was broken) (user: G018869 branch: trunk)
2012-06-08
16:22
[e81ad4d857a8b303] part of check-in [e85821bb13] small comments changes (user: G018869 branch: trunk)
2012-05-30
08:39
[b270e6e325a0285e] part of check-in [354bc0c88d] check of QueryPerformanceFrequency failure, and rollback to low-resolution timer (user: G018869 branch: trunk)
2012-05-23
17:06
[c346d035810a427f] part of check-in [0f09c1fa54] fixed potential GPF issue in Iso8601ToSecondsPUTF8Char function call (only asm version) (user: User branch: trunk)
12:38
[23a45e308c6b64cb] part of check-in [7f82fd67bd] JSON functions now handle '0' as number according to http://json.org specs (user: G018869 branch: trunk)
2012-05-16
15:15
[934c2fdedb0a30b4] part of check-in [5aa2c35b43] now Iso2S() - i.e. overriden i18nDateText global function pointer - will handle a date-only or time-only supplied value as expected (user: G018869 branch: trunk)
2012-05-03
18:53
[39699c856a76052d] part of check-in [a3602d5182] fixed Unicode compilation issue (user: User branch: trunk)
15:19
[17483dea1a62cf75] part of check-in [5b3468e16c] 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 (user: G018869 branch: trunk)
2012-04-19
13:37
[80dd9a70109d0017] part of check-in [61169861b7] fixed Unicode compilation error (user: G018869 branch: trunk)
2012-04-18
15:00
[ef606b65fecb560a] part of check-in [5a7c2310d7] enhanced FPC compatibility (user: G018869 branch: trunk)
2012-04-15
18:12
[e9b079eaf1fdc6c4] part of check-in [9f6337c6f9] Minor compilation issue fixed for Unicode versions of Delphi (user: User branch: trunk)
2012-04-13
16:21
[f273474a98164944] part of check-in [ecca0393cf] FPC compatibility enhancement (user: G018869 branch: trunk)
10:00
[8449f283550569ee] part of check-in [bea19ebde8]
  • 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
(user: G018869 branch: trunk)
2012-04-12
19:23
[ae087ac476a945f6] part of check-in [eb0eb4c9c4] completed TTextWriter.AddJSONEscape(const V: TVarRec) implementation (user: G018869 branch: trunk)
18:59
[ab5f06f11347a44f] part of check-in [d0e2d37be4] get rid of the over-complicated aEndOfObject parameter in TDynArrayJSONCustomReader callbacks (user: G018869 branch: trunk)
18:27
[5a9f56596588734a] part of check-in [ed8a3c8feb]
  • JSONDecode() overloaded functions now accept parameter names without case sensibility (and a new HandleValuesAsObjectOrArray parameter)
  • new JSONDecode() overloaded function, to properly handle unserialization of a JSON object within a buffer (used e.g. for TDynArrayJSONCustomReader)
  • new TTextWriter.AddJSONEscape() overloaded function, to be used to directly serialize some name/value pairs as a JSON object content (used e.g. for TDynArrayJSONCustomWriter callbacks)
  • fixed some issues in custom TDynArray JSON unserialization count
(user: G018869 branch: trunk)
15:26
[fc2d01940686784c] part of check-in [36d0fcd3c7] added TTextWriter.RegisterCustomJSONSerializer() method to allow JSON serialization of any dynamic array content (used by TDynArray.LoadFromJSON and TTextWriter.AddDynArrayJSON) (user: G018869 branch: trunk)
2012-04-11
11:44
[1610d5ac6a9dcf8e] part of check-in [3c464d188c] fixed Unicode Delphi compilation issues (user: G018869 branch: trunk)
11:39
[70e6b76572f57e1b] part of check-in [ef5cd9b40a] continuing compilation with FPC (Win32 platform by now) (user: G018869 branch: trunk)
2012-04-10
16:25
[ca5011e498576235] part of check-in [c8fe64da02]
  • start conversion to FPC 2.7.1 (using CodeTyphon release) - not yet finished
  • fixed some code issues by the way, due to more complete warning information from FPC
(user: G018869 branch: trunk)
2012-04-03
12:01
[b4bb7082a280cf88] part of check-in [c1228fe691] try to fix potential compiler issues of Delphi 2009 (user: G018869 branch: trunk)
2012-03-28
15:39
[0472d3b7933e80d7] part of check-in [a2ec3f6c00] fixed issue when creating indexes: only one index shall be created per field (user: G018869 branch: trunk)
2012-03-27
20:18
[9d5877604b704413] part of check-in [b65132bbd4] fixed GPF in TDynArray.SaveTo in case of invalid internal record layout (user: User branch: trunk)
2012-03-22
07:47
[df712b232fe2d587] part of check-in [2d88679175] updated SQLite3 engine to version 3.7.11 (user: G018869 branch: trunk)
2012-03-21
16:58
[1e11049c53175ecd] part of check-in [99a6c1536a] oups... (user: G018869 branch: trunk)
16:54
[43c9434aa967e1e8] part of check-in [6f77def459] fixed issue in GotoNextJSONObjectOrArray() for boolean values (user: G018869 branch: trunk)
10:57
[136477d4e5745779] part of check-in [2466ce9e88] 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) (user: G018869 branch: trunk)
2012-03-19
10:21
[7d0ec5d10a9cd487] part of check-in [f81f788718]
  • fixed VACUUM failure if there are one or more active SQL statements
  • fixed potential GPF in TDynArrayHashed.ReHash after TDynArray.Clear call
(user: G018869 branch: trunk)
2012-03-18
19:18
[d5432fc014ccd469] part of check-in [65a95763f7] 64 bit compilation (user: User branch: trunk)
2012-03-13
13:47
[06cc750cdc55781b] part of check-in [7444f84ec1]
  • 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')
(user: User branch: trunk)
2012-03-08
19:06
[7812e430d9eecc0b] part of check-in [1c857d723d] fix UNICODE compilation issues (Delphi >= 2009) (user: User branch: trunk)
17:14
[606042514c01377c] part of check-in [a089a32329]
  • 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)
(user: G018869 branch: trunk)
08:30
[9a1a99aa076042e4] part of check-in [cee7c99241]
  • 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
(user: G018869 branch: trunk)
2012-03-07
10:57
[d40326c7a1c7637a] part of check-in [a094034496]
  • new RawUTF8ArrayToQuotedCSV() functions
  • new TSQLRest.MainFieldIDs() method
  • refactoring of all security code in TServiceFactoryServer Allow* / Deny* methods
(user: G018869 branch: trunk)
2012-03-06
18:01
[02bb231625b6d8e7] part of check-in [9a888b376c]
  • new TTextWriter.AddNoJSONEscapeString method
  • fixed compilation issue with Delphi 5
  • TSynLog library instance name will be written without JSON escape
(user: G018869 branch: trunk)
2012-03-05
16:19
[9d8ca4803565b8e5] part of check-in [ddb7545aca] added the new default RESTful routing for interfaced-based services (in additional JSON-RPC mode), with associated regression tests (user: G018869 branch: trunk)
2012-03-02
09:07
[fab18fcd098f47f0] part of check-in [cf26b333d0] new sbtBeforeWrite step available (e.g. to safely update indexes) - fix regression issue introduced by http://synopse.info/fossil/info/747cf5317c (user: G018869 branch: trunk)
2012-03-01
20:20
[5e89241df7de3acd] part of check-in [11e01ba7e9]
  • 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)
(user: G018869 branch: trunk)
13:51
[fdce59234febff71] part of check-in [b50d44ec2b] TSynCache now uses the generic TSynNameValue object from its internal hashed list implementation (avoid duplicated code) (user: G018869 branch: trunk)
2012-02-29
20:56
[124bfd10f8e1988f] part of check-in [6ffde66930]
  • 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
(user: G018869 branch: trunk)
16:54
[323fb0121739b2ba] part of check-in [d0135ee1d6]
  • 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
(user: G018869 branch: trunk)
06:26
[4a4de9ec4ff2188f] part of check-in [89f3ea7723] includes FillChar/Move patches in all cases, for Delphi < 2007 - those are pretty stable versions (user: G018869 branch: trunk)
06:08
[6248f6715f16dab6] part of check-in [e4a87480a5] added optional DOPATCHTRTL to patch the RTL (Move/FillChar/RecordCopy) only if needed (not patched by default, for compatibility reasons) - you may want to use our Enhanced RTL patchs instead for a whole better response (user: G018869 branch: trunk)
2012-02-28
19:03
[af2b732155a06a95] part of check-in [93027901e7]
  • 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
(user: G018869 branch: trunk)
09:25
[f642da2c34923263] part of check-in [3719d470a9] fixed typos and added FastMM4 to sample 10 (user: G018869 branch: trunk)
09:00
[64792cdd8750aa26] part of check-in [04ed775ae7] include library file name in .log file (e.g. "LibraryTest 20120228 095809 MyLibrary.dll.log"), when the logging is initiated from a library (user: G018869 branch: trunk)
2012-02-26
18:29
[1ffdc1a27d167225] part of check-in [86107183864f] mORMot framework now implements Client-Server service implementation using regular Delphi interfaces (and a JSON-RPC like protocol) (user: User branch: trunk)
00:26
[24cc737de019d3d3] part of check-in [be458e5fb5]
  • 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 :)
(user: User branch: trunk)
2012-02-24
13:08
[22d09c77248e87bd] part of check-in [6b39ccefe8] 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! (user: G018869 branch: trunk)
2012-02-23
11:15
[f579ac398ebd1b83] part of check-in [e6c84794ec]
  • TSynLog now stores the executable build time, and library name (if any)
  • TSynLog and TSynMapFile now handle libraries (.dll/.ocx/.bpl) .map/.mab debugging information (only .exe was previously handled)
  • modified SynLogViewer and Map2Mab tools to reflect those TSynLog changes
(user: G018869 branch: trunk)
2012-02-21
18:25
[22e433a2864e9a29] part of check-in [24e816f66d] new RoundTo2Digits() function (user: G018869 branch: trunk)
2012-02-20
09:42
[fb01312cf2aea598] part of check-in [ec9a53a44c] TFileBufferWriter.Create now accepts up to 4 MB internal buffer size (user: G018869 branch: trunk)
2012-02-15
16:58
[be5f071fb4e268d5] part of check-in [915874bfc0] comments minor refresh (user: G018869 branch: trunk)
2012-02-14
18:26
[1621a96d20b5a998] part of check-in [a17904ffe2] fixed some compilation warnings with Delphi XE (user: G018869 branch: trunk)
13:12
[5851ffda44f75626] part of check-in [241337a58c] fixed issue in Hash32() implementation (potential GPF when reading ahead by DWORD - get rid of unnecessary asm optimization) (user: G018869 branch: trunk)
2012-02-11
09:48
[ff0f0cfa1299ce43] part of check-in [e2024a3117] new TSynTestCase.CheckFailed method (most of the time, Check is sufficient) (user: User branch: trunk)
2012-02-10
16:45
[44be36a261433ab6] part of check-in [a6745b5440] small speed enhancement of UTF-8 encoding/decoding routines (user: G018869 branch: trunk)
09:59
[c4921cccf7f16eb3] part of check-in [a96671b1d9] faster pure pascal IdemPropName() functions (comparing 4 chars at once) (user: G018869 branch: trunk)
2012-02-09
19:14
[cc649aa0ed294abe] part of check-in [bfa5eaf71c] fixed issue in TSynAnsiConvert and add corresponding regression test (user: User branch: trunk)
2012-02-08
18:35
[49f9d3c716449580] part of check-in [647d27132b] fix minor compiler warnings (user: User branch: trunk)
16:22
[74dc134646dea43c] part of check-in [fef5fd8640] 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 (user: G018869 branch: trunk)
2012-02-06
09:14
[a336e2e1e4e79881] part of check-in [4be9156a97] faster RawUnicodeToUtf8(), WinAnsiBufferToUtf8(), UTF8ToWideChar(), UTF8ToWinPChar() functions, thanks to very clever speed-up proposals by Sha (user: G018869 branch: trunk)
2012-02-02
20:22
[541d2d7d41ba649f] part of check-in [80bd3e5838]
  • 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)
(user: G018869 branch: trunk)
2012-02-01
17:49
[85b8d8c46263b80b] part of check-in [7ca32cbc66] minor changes (user: G018869 branch: trunk)
2012-01-31
21:08
[cc6072a6d51f0827] part of check-in [1bb6bfc3b7] fixed Delphi XE2 compilation warning (user: User branch: trunk)
2012-01-27
12:25
[aa6b071dd78df6d4] part of check-in [10ff7952fc] fixed UNICODE related issue (user: User branch: trunk)
2012-01-25
15:12
[9e9284b92a7bdcb0] part of check-in [c73f682203]
  • TMemoryMapText class (and therefore TSynLogFile) is now able to map/open an existing file: it will allow e.g. the SynLogViewer to browse a .log file which is actually still opened and working by the main application
  • new TSynLogFamily.IncludeComputerNameInFileName property
(user: G018869 branch: trunk)
2012-01-24
14:26
[8929751030e224a2] part of check-in [bf0a9eab82]
  • fixed rounding issue in ExtendedToString() and all corresponding wrappers like DoubleToStr*, Add(aDouble)..
  • get rid of wrong "Decimal" parameter in float to text conversion
(user: G018869 branch: trunk)
2012-01-23
07:21
[faca2470e467b65b] part of check-in [c3f7569292] add premilinary Windows 8 operating system detection (as wEight/wEightServer) (user: G018869 branch: trunk)
2012-01-20
16:37
[c8ab4aaa68cdbb22] part of check-in [20fac13a2c]
  • increased TDynArrayHashed number of void entries (for speed)
  • some code refactoring to avoid unnecessary constant and assertion code linking to the executable
(user: G018869 branch: trunk)
13:33
[f29815257b7668f0] part of check-in [d8b446f0b5] changed copyright notice to "(C) 2012" - yes, happy new year ! (user: G018869 branch: trunk)
10:21
[2f2f60d07d9e4b87] part of check-in [196ee89b2a] modified StreamUnSynLZ() so that Source stream will point after all read data (user: G018869 branch: trunk)
2012-01-18
13:21
[2a6c8dc003645516] part of check-in [966cfde097]
  • new TSQLDBStatement.ColumnsToSQLInsert() and BindFromRows() methods to allow fast data conversion between databases
  • new TSQLDBConnectionProperties.ClearConnectionPool method (could be used to recreate all connections in case of DB or network failure/timeout)
  • corresponding code refactoring in SynDBExplorer
(user: G018869 branch: trunk)
2012-01-17
19:56
[5805a50574014cfb] part of check-in [166261d4c5]
  • new FileSize() function
  • new TPrecisionTimer Pause and Resume methods
  • new ToVarInt64() and FromVarInt64() functions to encode and decode variable length signed Int64 values
  • new tftVarInt64 kind of variable Length column in TSynTableFieldType
(user: G018869 branch: trunk)
2012-01-11
12:49
[f3af374df664c739] part of check-in [ad3e9c502e]
  • 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)
(user: G018869 branch: trunk)
2012-01-07
12:20
[9a4f1bcdd6bf7266] part of check-in [ddcf953db5] code refactoring to allow compilation with Delphi XE2 background compiler (e.g. syntax check or code completion) (user: User branch: trunk)
2011-12-15
19:33
[ecd0ed06da0d94d1] part of check-in [7f8cbbbe44] 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 :) (user: G018869 branch: trunk)
2011-12-14
08:33
[97b75d1143f34e7f] part of check-in [782a4fa14f] try to avoid use of all unneeded FreeAndNil calls in the code - see http://www.nickhodges.com/post/Using-FreeAndNil.aspx (user: G018869 branch: trunk)
2011-12-13
20:29
[af579a4d93292140] part of check-in [6f7ddd5118] 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) (user: G018869 branch: trunk)
2011-12-12
07:23
[754e1d86bb05bbc2] part of check-in [c36819b8d6] updates about specific CPUX64 expectations (user: G018869 branch: trunk)
2011-12-09
08:04
[8a272dd84fa91db6] part of check-in [7a843d95e8] added USEPACKAGES conditional to help compiling the unit within packages (user: G018869 branch: trunk)
2011-11-30
13:39
[16a019a4c5cdb8ec] part of check-in [f00ac8f58c]
  • modified TDynArray.SaveToStream/LoadFromStream to read or save the data from the current stream position
  • TDynArray.SaveToStream() method can now save to any TStream class
(user: G018869 branch: trunk)
2011-11-17
12:53
[67d2894f8f8f19b0] part of check-in [f2b76e79df] fixed issue in TSynTableFieldProperties.SaveTo about saving wrong indexes (user: G018869 branch: trunk)
2011-11-09
10:50
[5a93d8562e77fe11] part of check-in [7512d0150a] fixed issue in TDynArrayHashed if you do not use the external Count (user: G018869 branch: trunk)
2011-11-04
15:52
[bc5083fdb6b33161] part of check-in [5cea9b0c10] x64 speed enhancement (user: G018869 branch: trunk)
2011-10-28
13:02
[4ce64bf9d61dea5b] part of check-in [81bd02bc8b] TSynCache now handles an integer ResultTag: PtrInt value parameter (used e.g. to store the row counts of a SQL result cache) (user: G018869 branch: trunk)
2011-10-17
14:36
[4a9d27f619f70b5e] part of check-in [21747e8b91] added test about per-database encryption in TTestExternalDatabase.CryptedDatabase (user: G018869 branch: trunk)
2011-10-06
16:35
[cfb7a43e4ec997ac] part of check-in [fed5c7b31b] introducing SynDBODBC.pas, unit for ODBC 3.5 library direct access classes (to be used with our SynDB architecture) - initial commit, with no implementation (user: G018869 branch: trunk)
2011-10-05
07:51
[2ed4befa2ea36278] part of check-in [738156dbd9] TSynLog allows read sharing of the .log created file (user: G018869 branch: trunk)
2011-09-21
20:23
[426150cd3f80754e] part of check-in [b346bece97] first introduction into the 64 bit XE2 compiler (user: ab branch: trunk)
07:28
[8f129e2b3f6527b4] part of check-in [d802de9fa0]
  • fixed issue in Utf8DecodeToRawUnicodeUI() function
  • new UpperCaseUnicode() and LowerCaseUnicode() functions which handle directly RawUTF8 content, which may be a bit faster than the standard AnsiUpperCase for this purpose
(user: G018869 branch: trunk)
2011-09-20
18:59
[84af77dddaceccfc] part of check-in [0a493ab741] fixed compilation issue with Delphi 5 (user: G018869 branch: trunk)
18:49
[79e8f5dc594cbae0] part of check-in [de605b4011]
  • 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)
(user: G018869 branch: trunk)
2011-09-17
18:05
[6efe313e865894d9] part of check-in [40b9886964] Delphi XE2 compatibility: all tests passed (32 Bit) (user: ab branch: trunk)
2011-09-16
15:52
[add03ba21b7301cc] part of check-in [0b68e40558] first step into XE2 compatibility (user: G018869 branch: trunk)
2011-09-12
08:38
[0c50289b5a6ed2da] part of check-in [90f07afcf4] fix potential GPF issue in code using ConvertHexToBin[] (user: G018869 branch: trunk)
08:19
[8c345c46c6e738e8] part of check-in [1b43d0dcfa] small fix to allow bigger .map files to be processed (user: G018869 branch: trunk)
2011-08-31
16:19
[c397b975796975ca] part of check-in [b3ab1d5460] TQueryValue.As* methods now handle NULL column as 0 or '' (user: G018869 branch: trunk)
2011-08-30
07:04
[bf20812fe53d7334] part of check-in [746753d45c] fixed PUREPASCAL compilation of the framework (user: G018869 branch: trunk)
06:30
[50c178a6ab4c1ec0] part of check-in [7ec0297ba6] fixed LVCL compilation issues (user: G018869 branch: trunk)
2011-08-29
10:05
[9042add23c7907a3] part of check-in [21888ecc70] fixed potential A/V error in function UTF8DecodeToString (user: G018869 branch: trunk)
2011-08-26
15:31
[7cfe811f77682cd7] part of check-in [b4e0ee9a01] TSQLDatabase, TSQLRestClientDB and TSQLRestServerDB constructors now accept an optional Password parameter, associated to the supplied file name, in order to use encryption at the database level - still experimental (user: G018869 branch: trunk)
2011-08-22
15:58
[b8ee4fac3cc78412] part of check-in [3ebb4a6785] Delphi 5 compilation fixes (user: G018869 branch: trunk)
2011-08-20
08:59
[b6fc306f8a0d2e67] part of check-in [ed22240c3d] enhanced log viewer (and documentation) (user: ab branch: trunk)
2011-08-19
14:47
[4a6ba4afd0be5860] part of check-in [d3916ef410] tuning and fixing logging implementation of the framework (user: G018869 branch: trunk)
07:31
[a9657a44b535ab23] part of check-in [79896c00b2]
  • new Synopse logo in LogView tool
  • profiler options now shown as a group box
  • several fixes about method profiling
(user: G018869 branch: trunk)
2011-08-18
17:25
[2e9604b9446b37c4] part of check-in [f2b22b957b] fix several issues in log viewer (user: ab branch: trunk)
14:55
[1ecfe378df76ae30] part of check-in [344cebd917] small enhancement (user: G018869 branch: trunk)
14:53
[f8ab3da4da79c753] part of check-in [efbb14a658] new TSynLogFile.LogProcMerged property to merge the location name timing (user: G018869 branch: trunk)
10:05
[529002175284dc05] part of check-in [8caf601e5f]
  • includes our optimized RecordCopy procedure in replacement to the slower default System.@CopyRecord internal RTL function
  • our optimized Move() and FillChar() will replac the default System RTL function, for Delphi versions prior to 2007 (which didn't contain those)
(user: G018869 branch: trunk)
2011-08-17
15:44
[7bec36290d7ba199] part of check-in [94c5a9ccff]
  • new TSynMapFile.FindLocation method for high-level .map symbol access
  • new TMemoryMapText.LineContains method for fast case-insensitive search
(user: G018869 branch: trunk)
2011-08-16
16:06
[db590ae75a1df26b] part of check-in [08702b6458] new TSynLog .log/.synlz file vizualizer tool, named LogView (user: G018869 branch: trunk)
08:36
[115aa6377705a51f] part of check-in [e08605f2b4] small fixes in TSynLogFile (user: G018869 branch: trunk)
08:21
[ff74efbfdd7a5c20] part of check-in [64d07db5bd] new TSynLogFile.LogProc[] property for customer-side method profiling (user: G018869 branch: trunk)
2011-08-12
14:09
[a6add372d35ed213] part of check-in [d4441fa616] enhanced TSynLog class (user: G018869 branch: trunk)
08:01
[24367d3457e9c2b0] part of check-in [747cf5317c] new TSynTableFieldProperties.OrderedIndexRefresh method, to allow access on OrderedIndex[] even if the index needs to be refreshed (user: G018869 branch: trunk)
2011-08-11
15:17
[cd4b0be412eaf9c5] part of check-in [ef0b680898] Delphi 5 compatibility fix (user: G018869 branch: trunk)
2011-08-10
16:08
[d79cda1ea3a66d3d] part of check-in [306ce29c98] documentation enhancements (user: G018869 branch: trunk)
2011-08-09
18:20
[6d635855dd710d66] part of check-in [09e8f38051]
  • 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
(user: G018869 branch: trunk)
2011-08-05
07:46
[ce221ee21fea8fba] part of check-in [2467c59ee6] added test of TModTime published property (i.e. latest update time) (user: G018869 branch: trunk)
2011-08-04
08:44
[f44d2fa841dc2970] part of check-in [a4be8619ba]
  • 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
(user: G018869 branch: trunk)
2011-08-03
16:25
[aaf0d30bf6aea8eb] part of check-in [9a01084359]
  • 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)
(user: G018869 branch: trunk)
2011-07-28
19:22
[7fec6b7f530dde95] part of check-in [d1e353de46]
  • 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)
(user: G018869 branch: trunk)
2011-07-27
17:52
[70a3435d95a769f5] part of check-in [e465eb3bc2] fix compilation issue with our Enhanced Runtime (or LVCL) library (user: ab branch: trunk)
2011-07-22
14:57
[dfef02c264413cb0] part of check-in [f2360c29e7] The SQLite3 engine is now available as a SynDB-compatible database engine (user: G018869 branch: trunk)
09:40
[963a1701c923ef44] part of check-in [75b5b81a88] 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) (user: G018869 branch: trunk)
2011-07-20
08:30
[b5271224e35c334b] part of check-in [e4584d9a3d] SynDBExplorer can now be used for any "Generic OLEDB" provider - the ADO-like connection string and connection dialog is used in this case - all metadata is retrieved from the provider, using OleDB "magic" - nice ;) (user: G018869 branch: trunk)
06:39
[56cc5332726be8bb] part of check-in [4a4dd21806]
  • fix endless recursion loop in ExtractAllResources for nested classes
  • several changes in ExtractAllResources implementation
(user: G018869 branch: trunk)
2011-07-19
13:58
[3019c10ac4e44d6e] part of check-in [c5a5b9d892] code refactoring for better metadata (database and table schemas) handling, including GetTableNames, GetFields, GetFieldDefinitions and GetForeignKey methods - will work with OleDB metadata and direct Oracle sys.all_* tables access via SQL (user: G018869 branch: trunk)
2011-07-18
16:29
[f93f269c97e8611b] part of check-in [6b2f2ea97b] table and columns metadata retrieval now working with OleDB and OCI (user: G018869 branch: trunk)
2011-07-15
09:34
[a660adad0edf09fe] part of check-in [ff9623bc90]
  • 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
(user: G018869 branch: trunk)
2011-07-14
21:17
[abc7c00ff901f4c2] part of check-in [9f4a4e82e1] small enhancements (user: ab branch: trunk)
19:23
[6fc1be32087593ee] part of check-in [22a6c85b4e]
  • 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
(user: G018869 branch: trunk)
2011-07-13
13:00
[89f61a7b3f6f5fa9] part of check-in [10de6e2bca]
  • 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
(user: G018869 branch: trunk)
2011-07-11
12:55
[53023d5f702d64f8] part of check-in [d62eb166b7] SynDB, SynOleDB and SynDBOracle made compatible with Delphi 5 (which does not handled Int64 variants :( so we have to make a workaround) (user: G018869 branch: trunk)
2011-07-09
09:45
[674e9e4a98a1348c] part of check-in [1073f16517]
  • Transaction implementation clean-up (including AutoCommit feature for Oracle)
  • Fixed issues, and better data type assignment and conversion for SynDBOracle
(user: ab branch: trunk)
2011-07-08
15:15
[b68d8a68b3d8b803] part of check-in [94bfc76413]
  • new AnsiCharToUTF8() function
  • fixed issue in StrCurr64() low-level conversion routine
  • new TDynArrayHashed.AddAndMakeUniqueName() method
(user: G018869 branch: trunk)
2011-07-01
17:58
[468da6c8ea3f3b05] part of check-in [81717665202d] further debugging and speed enhancements (user: ab branch: trunk)
2011-06-30
21:12
[ed23c8f067396b36] part of check-in [ddba9e5a73] new direct late binding feature now working with Delphi 7 up to XE (user: ab branch: trunk)
18:02
[f5c675a35ff27c03] part of check-in [ed32c2ff92] faster late binding process for our variants custom types (i.e. TSynTableVariantType and TSQLDBRowVariantType): you can call SynRegisterCustomVariantType() function to register any other custom variant type, and enhance GetProperty/SetProperty process speed (user: G018869 branch: trunk)
09:23
[50b83b79b864901b] part of check-in [323d7b22ba] TSynLog now writes the elapsed time (in us) for Enter/Leave events, if HighResolutionTimeStamp is TRUE (user: G018869 branch: trunk)
2011-06-29
16:43
[2c007d8764acd4d4] part of check-in [97c6b6e764] minor speed enhancement (user: G018869 branch: trunk)
2011-06-28
20:09
[b490bb4ae319feca] part of check-in [b20885df97] updated SQLite3 engine to version 3.7.7.1 (user: ab branch: trunk)
13:33
[2c764cb26b03b522] part of check-in [ef3a66cd82]
- fixed issue in produced JSON stream using '=' instead of ':'
(user: G018869 branch: trunk)
2011-06-27
14:24
[960a1558b9be2e67] part of check-in [5facd35801] fix issues with Curr64ToStr() and Curr64ToPChar() with negative amounts, with some speed enhancements and new associated tests (user: ab branch: trunk)
2011-06-25
11:55
[589a0b9440d53c15] part of check-in [311d2f977e] SynOleDB updated: tested with Microsoft SQL Server - still an issue with TEXT query parameters (user: ab branch: trunk)
2011-06-24
16:51
[98487a7a48d7423d] part of check-in [243ab58e23] SynOleDB now executes statements and retrieve results at light speed !!! :) - parameters use still to be tested (user: ab branch: trunk)
2011-06-23
17:16
[e93c15335895168a] part of check-in [8196d9e90a] SynOleDB one step further toward execution :) (user: ab branch: trunk)
2011-06-22
16:10
[4b60dac2ee3eb085] part of check-in [b69299645a] generic OleDB database access architecture defined (user: ab branch: trunk)
2011-06-17
14:23
[ee5638da8d5d6d19] part of check-in [bdf1f00225]
  • fixed issues in SQLite3UIEdit
  • several small compilation or documentation fixes
(user: ab branch: trunk)
2011-06-16
15:42
[91bddc516b4c9ecf] part of check-in [215dfe5ac7] fixed some potential compilation issues (user: ab branch: trunk)
2011-06-08
13:04
[01a11ead4aaac7c0] part of check-in [154f9f7f11]
  • generic Delphi 5 solution of exception interception
  • documentation enhancement
(user: ab branch: trunk)
07:39
[c9b6afeb32a17caa] part of check-in [05a32c637b] TSynLog now works as expected under Delphi 5, using low-level in-memory patch of the System.pas unit ;) (user: ab branch: trunk)
2011-06-07
16:39
[cc1b76029493090c] part of check-in [0425cea128]
  • try to make logging work with Delphi 5 - not yet
  • avoid testing StandardFontsReplace if not running with ANSI code page
(user: ab branch: trunk)
12:51
[42e5e1e1c49af582] part of check-in [70f6d8dd91] try to avoid any charset issue from source code (user: ab branch: trunk)
06:14
[a72897f4e43b115d] part of check-in [fa3685333d] changed all constant ansichar declaration from #.... into chr() in order to allow compile tests with non 1252 Windows... (user: ab branch: trunk)
2011-06-04
18:20
[3e0242eb9dcd1256] part of check-in [3f7908feb5] avoid GPF in AutoFlushProc background thread (user: ab branch: trunk)
2011-06-03
15:55
[120642a125d15aa9] part of check-in [85e0d42d7a]
  • updated documentation
  • fix '<' character HTML export in SynProject
(user: ab branch: trunk)
2011-05-31
15:52
[670ba5453fea1077] part of check-in [b7563edfae]
  • enhanced documentation
  • LoggingTest for Delphi 5
(user: ab branch: trunk)
14:04
[cf1599c594240d31] part of check-in [da448f54f0]
code modifications to compile with Delphi 5 compiler (no ORM code compiles yet: so only low-level units like SynCommons / SynCrypto / SynPdf are tested)
(user: ab branch: trunk)
2011-05-25
14:21
[6645e08c5457103c] part of check-in [4f012f51f8]
  • 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
(user: ab branch: trunk)
2011-05-23
16:08
[242f358658b11476] part of check-in [dc06f54458] session and uri authentication implemented - also associated documentation (user: ab branch: trunk)
2011-05-20
17:19
[9a29d1bdc6fe1841] part of check-in [a08c2c046a] introducing framework security and authentication (user: ab branch: trunk)
2011-05-17
15:29
[c849b26481bc13f5] part of check-in [9877caf56e]
  • 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
(user: ab branch: trunk)
2011-05-16
08:04
[65fb60aa65ee3d26] part of check-in [fa656104ad] Explicitly enhance SOA orientation of the framework (user: ab branch: trunk)
2011-05-13
14:51
[4eb16eba2108ece3] part of check-in [1f7fd32764]
  • 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
(user: ab branch: trunk)
2011-05-12
21:25
[894ac5d8087e0282] part of check-in [709bddc9eb]
  • 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
(user: ab branch: trunk)
2011-05-06
16:28
[20696151c3818478] part of check-in [d8f92bdadb] virtual table using in-memory fast engine, and JSON storage on disk (not yet finished) (user: ab branch: trunk)
10:00
[27badef1c678a5c9] part of check-in [10e47ac1f5]
  • 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
(user: ab branch: trunk)
2011-05-05
20:41
[327b8a2fe24390cd] part of check-in [f53ad31ef6]
  • fixed compilation under Delphi 2009/2010/XE
  • TSQLVirtualTable* one step further
(user: ab branch: trunk)
17:18
[62a461ed4b078dff] part of check-in [c682fcacab] first introduction of virtual table Delphi implementation, via TSQLVirtualTableModule/TSQLVirtualTable/TSQLVirtualTableCursor classes and corresponding low-level functions and structures (user: ab branch: trunk)
2011-05-04
18:06
[8e3bdbc200df606f] part of check-in [f5f9e96de6]
  • 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
(user: ab branch: trunk)
13:16
[f2ada273a9e03e56] part of check-in [c8a8aab5ff] Delphi 2009 compiler is broken (F2084 Internal Error: DT5830) :( (user: ab branch: trunk)
2011-05-03
15:01
[14fc1ed96fd2b740] part of check-in [5c376ea962] new IntegerDynArrayContains(), RawUTF8DynArrayContainsCase/NoCase() and Byte/Word/Cardinal/Int64/CurrencyDynArrayContains(BlobField,I64) SQL functions, able to fast search data within T*DynArray and TRawUTF8DynArray published properties BLOB (Currency mapped as PInt64) (user: ab branch: trunk)
2011-04-29
15:16
[9bd360b760600b98] part of check-in [97ab7a8753] new Escape: TTextWriterKind optional parameter for TTextWriter.Add() (user: ab branch: trunk)
2011-04-26
15:17
[76aaac9b8dbdebd2] part of check-in [09caae83f0]
  • 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
(user: ab branch: trunk)
2011-04-25
08:02
[e441493d1155c4a9] part of check-in [c7372d2775] fix compilation warning in Delphi 2009/2010/XE (user: ab branch: trunk)
2011-04-22
15:51
[6b4f3fd07de80e13] part of check-in [84edebde5b] ORM now handle TPersistent, TStrings, TCollection and TRawUTF8List as published properties (stored as TEXT in ObjectToJSON format) (user: ab branch: trunk)
2011-04-21
15:40
[505393823cbf4f17] part of check-in [23ad5c6672] minor changes (user: ab branch: trunk)
2011-04-19
20:36
[ef4cd16142b201ec] part of check-in [cd47cf4439]
  • fixed compilation issue with Delphi 2009/2010/XE
  • enhanced mime detection from file name
(user: ab branch: trunk)
14:38
[b0694b283db883be] part of check-in [39d1c320fd]
  • enhanced documentation and SynFile main sample program, mainly about Report generation
  • GetMimeContentType() function has now an optional FileName parameter
  • TTextWriter.Add(Format..) has now a JSONEscape: boolean=false parameter (used e.g. during logging to keep text on the same line)
  • ExtractAllResources function now handled parent properties
  • new DrawTextU/DrawTextAcrossColsFromCSV methods for TGDIPages
(user: ab branch: trunk)
2011-04-18
20:57
[b51d5f6e83a7145a] part of check-in [ab5e2473ec]
  • TSQLRestServerDB now uses fast TDynArrayHashed for its internal prepared statement cache
  • added logging in most units
(user: ab branch: trunk)
17:34
[0f36daf6424d336b] part of check-in [effdec39f4]
  • fixed issue in serializing sftCurrency type in TSQLRecord.GetJSONValue
  • update SQLite3 engine to version 3.7.6.2
(user: ab branch: trunk)
2011-04-15
13:55
[531cdd96d8803324] part of check-in [c3d5d774ce] updated documentation (user: ab branch: trunk)
07:13
[fb57cb5c329d7c11] part of check-in [c99a910a88]
  • .mab file now contain the file name
  • TSynLog Enter/Leave speed up
(user: ab branch: trunk)
2011-04-14
18:42
[c6241c57b77ae336] part of check-in [cde29f3646] fixed issue in TFileBufferReader.ReadVarUInt32Array (user: ab branch: trunk)
15:27
[6ec5420cc7af177d] part of check-in [8b51c51d18]
  • new LoggingTest separated executable (in "Samples/11 - Exception logging" new folder)
  • new Map2Mab utility to create .mab files from .map, or embedded .map content into an .exe
  • fix issues in embedding .mab file into .exe
(user: ab branch: trunk)
07:10
[08f5a8ec58860f86] part of check-in [1952b3d130] added regression tests about saving/loading records within records (one discovered issue fixed) (user: ab branch: trunk)
2011-04-13
11:50
[fcff838435ed20f0] part of check-in [7fdb428b29] RecordLoad now handle records within records (user: ab branch: trunk)
11:45
[ae87d614db3e8d49] part of check-in [5e6d23bd2b]
  • new sllFail logging level, dedicated to TSynTestsLogged.Check() failures
  • now handle records within records in RecordSave/RecordSaveLength
(user: ab branch: trunk)
05:52
[970554993bdd5250] part of check-in [0a7457ef69]
  • fixed issue in ToVarUInt32Length/ToVarUInt32LengthWithData
  • new sllSQL, sllResult, sllDB, sllHTTP, sllClient, sllServer logging levels
  • every level can potentialy trace the stack calls (via TSynLogFamily.LevelStackTrace property)
  • TSynTestsLogged console logging rewritten
(user: ab branch: trunk)
2011-04-11
15:25
[9201998c955342fc] part of check-in [e36527bcbb]
  • new TSynTestsLogged test suit class, with automated test case logging (used e.g. by TestSQL3.dpr)
  • new sllStackTrace event kind to log caller's stack trace
  • rearrange exception logging code (no code duplicated any more)
(user: ab branch: trunk)
2011-04-08
20:19
[d5168bd682b971ec] part of check-in [efbecab7e0] small fixes (especially compilation under Delphi 2009/2010/XE) (user: ab branch: trunk)
15:11
[42cb8c1d963a9608] part of check-in [5aea44b267]
  • log date and time events according to local time (not gmt time)
  • TSynLogFile now reading header and events from a .log file
(user: ab branch: trunk)
2011-04-07
18:34
[d761e17abc495802] part of check-in [479a746db5]
  • 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)
(user: ab branch: trunk)
2011-04-06
19:25
[082b81c58c9b70cc] part of check-in [a286d5c455]
  • 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 :)
(user: ab branch: trunk)
2011-04-05
21:11
[e859346161210907] part of check-in [1bef5e3d8f] fixed problem reading .map source code line numbers (user: ab branch: trunk)
20:11
[0730db0319dc61d7] part of check-in [614cb71122] fixed compilation for Delphi 2009/2010/XE (incoherent .map file generation) (user: ab branch: trunk)
18:37
[b19cc7e8689a411c] part of check-in [d65d009416] TSynLog and TSynMapFile now working all together as expected:
  • changed the exception handling process from windows API to pure Delphi scheme
  • stack trace now working as expected
  • a lot of fixes and enhancements
  • introducing new .mab file, i.e. binary representation of .map files
(user: ab branch: trunk)
2011-04-03
09:00
[8b88193530fc06d6] part of check-in [8195c840e1] TDynArrayHashed now working as expected, with some full regression tests - resulting speed sounds very good (user: ab branch: trunk)
2011-04-02
08:34
[8b25db076c366d2c] part of check-in [6f3b4473d0] TDynArrayHashed now working, with included tests (user: ab branch: trunk)
2011-04-01
14:06
[01b4d0c3a91cafc9] part of check-in [56e4be991a] introducing new TDynArrayHashed = object(TDynArray) feature - not finished yet (user: ab branch: trunk)
2011-03-31
07:04
[2b0558a49d753cf5] part of check-in [9c1c9f76f8] now RecordLoad/RecordSave functions can handle dynamic arrays within record fields (user: ab branch: trunk)
2011-03-30
17:21
[0a7cc7866658980f] part of check-in [bb0fa06b16] logging execution speed up (user: ab branch: trunk)
15:10
[a5f7faef71294711] part of check-in [bc2254adb1]
  • all Exceptions can be automaticaly logged on request
  • logs can contain serialized objects, dynamic arrays, enumerates and sets values
(user: ab branch: trunk)
2011-03-29
15:51
[0982763c701ff194] part of check-in [9ce433afdc] high resolution timestamps are now calculated starting from 0 (user: ab branch: trunk)
2011-03-28
17:32
[7843728ad7d235c1] part of check-in [6b91410d00] fixed compilation with TMS components (user: ab branch: trunk)
16:07
[501be726c2906d62] part of check-in [bbb45c117b] TSynLog enhanced with new features like auto flush after some timeout period (user: ab branch: trunk)
2011-03-27
14:47
[f95c9d0d3c69ae58] part of check-in [29643c75b6] introducing TSQLLog class able to log directly a TObject instance content as JSON (user: ab branch: trunk)
2011-03-26
12:35
[ee4370144a002e40] part of check-in [81782234a8]
  • now TTextWriter can have a custom internal buffer size (default 1024 bytes)
  • enhanced TSynLog implementation and fix compatilibity problem with Delphi 2007 and up
(user: ab branch: trunk)
2011-03-25
20:22
[09b41916cf7ef4eb] part of check-in [156a9090f4] introducing new Logging classes and functions (user: ab branch: trunk)
2011-03-24
20:43
[6a802df1b74eefa8] part of check-in [22d53d70a1] Delphi 7 + 2007 + 2010 compatibility fixes (user: ab branch: trunk)
17:37
[14733e303b2c3fb2] part of check-in [d24db93eeb]
  • TSockData is now defined as an UTF-8 string for Delphi 2009/2010/XE
  • HttpApiServer.dpr sample program now handles accentuated file names as expected
(user: ab branch: trunk)
2011-03-23
07:59
[fbc56e7d44f601f4] part of check-in [c322380e76] enhanced TSQLRecordMany.DestGetJoinedTable method to handle custom fields (user: ab branch: trunk)
2011-03-22
18:53
[b8ef747f7014fc22] part of check-in [0fbcfa621e] try to avoid GPF when null is returned by SQLite3 for a "" field - see http://synopse.info/forum/viewtopic.php?id=275 (user: ab branch: trunk)
18:19
[0c8e4e1e9cd6312c] part of check-in [8301694809c] User Interface generation with pure VCL... one step further... still code review needed (user: ab branch: trunk)
14:53
[b0df8a7e8517dfc7] part of check-in [2149eb9615] 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 (user: ab branch: trunk)
2011-03-21
22:08
[51a9840ce02f6d86] part of check-in [958d1c6131] continuing dynamic arrays in TSQLRecord implementation (user: ab branch: trunk)
18:42
[3a8fbed966b20743] part of check-in [910e72d4ed]
  • 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)
(user: ab branch: trunk)
09:09
[b404471149df496c] part of check-in [aa4b00652c]
  • 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)
(user: ab branch: trunk)
2011-03-19
08:41
[0e5a30a3251b3d4c] part of check-in [6834918946a] Delphi 2009/2010/XE compatibility fix + UI compilation with TMS (user: ab branch: trunk)
2011-03-18
17:04
[db0c1aa8a3a92b40] part of check-in [2c036e5531] TDynArray can now serialize TSynUnicodeDynArray and TWideStringDynArray as pure JSON text array (user: ab branch: trunk)
2011-03-17
10:10
[1e916c2c8908e5dd] part of check-in [4207d16dd4] new asm optimized version of function Base64EncodeMain (user: ab branch: trunk)
08:39
[1897265a7845609e] part of check-in [fd42e4b868] faster Base64 decoding (updated pascal version, and written dedicated asm function) (user: ab branch: trunk)
2011-03-16
15:58
[d6926630fad6790c] part of check-in [56477e3b49]
  • TDateTimeDynArray and TTimeLogDynArray are now handled as JSON serialization
  • several speedup and new methods
(user: ab branch: trunk)
08:06
[8b5fd6f62194595c] part of check-in [e2c7df97c8]
  • fixed issue in TDynArray.FindAnd* methods
  • faster TTextWriter.AddDynArrayJSON method using new TTextWriter.WrBase64 method
(user: ab branch: trunk)
2011-03-15
17:24
[3bbea04a4c138c6a] part of check-in [32b7777498]
  • new FindAndFill / FindAndDelete / FindAndUpdate / FindAndAddIfNotExisting methods for TDynArray
  • introducing the new tftDynArray property type for TSQLRecord (not yet finished)
(user: ab branch: trunk)
10:58
[c444a0ad92c5876f] part of check-in [832c85fb4c]
  • added JSON_BASE64_MAGIC header (i.e. UTF-8 encoded \uFFF0 special code) before any TDynArray JSON if Base64 encoded (needed to recognize the tftDynArray encoding format in SQLite3Commons)
  • some code speed up
(user: ab branch: trunk)
2011-03-14
20:46
[e186fa38ef56bfbb] part of check-in [82c006115c] Delphi 2009/2010/XE compatibility fix (user: ab branch: trunk)
17:33
[19dc4a87c06f494a] part of check-in [8d0b6de31d] faster base64 decoding (user: ab branch: trunk)
16:23
[6682795f1ed61bac] part of check-in [38ea4ff294]
  • 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
(user: ab branch: trunk)
08:23
[0ea93587ab247d11] part of check-in [6cdb6c6c08] new Slice and AddArray method for TDynArray - new DynArray() function (user: ab branch: trunk)
2011-03-13
20:38
[bf37aeb746e77a01] part of check-in [626c4ca204] new Reverse and Slice methods for TDynArray (user: ab branch: trunk)
16:20
[12a6cf74abf420cc] part of check-in [0dc1998258]
  • faster implementation of Move() for Delphi versions with no FastCode inside
  • TDynArray: external Count feature to speed up Add and Delete methods - see also new Capacity property
(user: ab branch: trunk)
2011-03-11
19:47
[0311d0104bd3fdf1] part of check-in [faed9f2b35] LVCL and Delphi 2009/2010/XE compatibility fixes (user: ab branch: trunk)
17:08
[430bce8bbbc83080] part of check-in [304b4860fd] new HTTP/1.1 server using http.sys now seems complete and working under XP (user: ab branch: trunk)
2011-03-09
16:54
[bba25b4d83ee68ff] part of check-in [d02b152883] fix memory corruption issue in TDynArray.Delete (user: ab branch: trunk)
2011-03-08
16:58
[c5f23b04914669aa] part of check-in [9dbb943857] updated comments and setter added to TDynArray.Compare property (user: ab branch: trunk)
2011-03-07
19:41
[0d07e8789ff914f3] part of check-in [cfd530e2ea] new overloaded TDynArray.Find method using indexed lookup (user: ab branch: trunk)
18:48
[5ae7a32b9a862efd] part of check-in [4b4b944ff4] adapted TDynArray for Delphi 2009/2010/XE (Unicode ready version) (user: ab branch: trunk)
17:06
[59cd564e0eae7e2e] part of check-in [e9fd58a4fa]
  • new BinToBase64 and Base64ToBin conversion functions
  • new low-level RTTI functions for handling record types: RecordEquals, RecordSave, RecordSaveLength, RecordLoad
  • new TDynArray object, which is a wrapper around any dynamic array: you can now access to the dynamic array using TList-like properties and methods, e.g. Count, Add, Insert, Delete, Clear, IndexOf, Find, Sort and some new methods like LoadFromStream, SaveToStream, LoadFrom and SaveTo which allow fast binary serialization of any dynamic array, even containing strings or records - a CreateOrderedIndex method is also available to create individual index according to the dynamic array content
(user: ab branch: trunk)
2011-03-05
12:38
[02abbfb860e4b6a2] part of check-in [05e9771221] enhanced TDynArray (user: ab branch: trunk)
10:02
[a51e0726a1813a1c] part of check-in [e453deca49]
  • fix Delphi 2009/2010/XE compilation issues
  • TaskDialog enhancements
(user: ab branch: trunk)
2011-03-04
17:42
[7c71412f42af59de] part of check-in [0e21b38855] introducing TDynArray: a wrapper around a dynamic array with one dimension, to provide TList-like methods and automatic record RTTI initialization/copy/comparison (user: ab branch: trunk)
2011-03-03
16:43
[344eb4ca5bcfc2f4] part of check-in [c52b03dec1]
  • 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
(user: ab branch: trunk)
2011-02-28
16:51
[e9c5ea7a25049d4e] part of check-in [9571795732424598a]
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)
(user: ab branch: trunk)
2011-02-27
15:16
[856080b53419d359] part of check-in [236bdb3363]
  • fixed issue for unique field validation in SynBigTable
  • new TSynTableData.FilterSBFValue/ValidateSBFValue methods
(user: ab branch: trunk)
2011-02-26
12:05
[d9e65421be9dfb06] part of check-in [793ffe2790]
  • 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)
(user: ab branch: trunk)
09:25
[a0b7b3c02ecaed05] part of check-in [cf858fb1d2] minor fixes and code refactoring (user: ab branch: trunk)
2011-02-23
17:40
[d48605b40b613c44] part of check-in [caf561aa07] new TJSONSerializer class and ObjectToJSON/JSONToObject method (user: ab branch: trunk)
10:24
[41962bf0f2f3eb25] part of check-in [0437c159fd]
  • 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
(user: ab branch: trunk)
2011-02-22
21:12
[04ad04d304ba1e89] part of check-in [5c03626961]
  • 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)
(user: ab branch: trunk)
18:04
[f787ed621f830de5] part of check-in [14785e263f]
  • 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.
(user: ab branch: trunk)
2011-02-21
18:02
[c5f355cb5c94996e] part of check-in [85dfa822ed]
  • 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.
(user: ab branch: trunk)
13:37
[f6b84e4f1b86d701] part of check-in [f8725678fd]
  • 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
(user: ab branch: trunk)
2011-02-19
08:33
[b07e183a7a9f437c] part of check-in [c9a9db1454] StringToWideChar() is buggy since Delphi 7: wrong code page used - fixed by calling directly Win32 API (user: ab branch: trunk)
2011-02-17
14:13
[785339e0875a1d6f] part of check-in [f3adff7cc9] SynBigTable major update speed enhancements and index handling - with better test coverage (user: ab branch: trunk)
2011-02-16
17:10
[6ca0ab6affd2d7fc] part of check-in [a856fe847c] new test added (user: ab branch: trunk)
09:37
[ee2f771c1fd4d565] part of check-in [a9d1df1d24]
  • fixed issue with Pack method implementation, in case of updated records
  • fixed issue with TSynBigTableMetaData/TSynBigTableRecord updating and packing (and added corresponding regression tests)
  • AddField methods now return a boolean and no TSynTableFieldProperties, because these instances may be modified after a later AddFieldUpdate call
  • enhanced test coverage (mostly TSynBigTableMetaData/TSynBigTableRecord)
  • fixed issue in TSynTable.Data() method: ID was not set as expected
  • fixed issue in TSynTableFieldProperties: wrong constraint evaluation and index refresh at records update
  • great performance improvement in TSynTableFieldProperties for update process
  • new Int64ToUInt32() procedure
(user: ab branch: trunk)
2011-02-08
17:07
[8032498e30c61f61] part of check-in [b59d83be6d] we reach year 2011 - let's celebrate! (user: ab branch: trunk)
2011-02-07
19:08
[4f290899b7d218d3] part of check-in [fbd0c9400b] compilation with Delphi 2009/2010/XE (user: ab branch: trunk)
18:02
[bb643ce422f7cd83] part of check-in [ad8ba37e93] new CreateInternalWindow() for creating a GDI message handler in any object (user: ab branch: trunk)
2011-02-04
08:58
[43686a19970cb039] part of check-in [3a476961bc]
  • 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
(user: ab branch: trunk)
2011-02-01
14:43
[e6436be17cfb875b] part of check-in [a5189713f7]
  • new TPropInfo.SetVariant/GetVariant methods
  • new GetFieldValue/SetFieldValue and GetFieldVariant/SetFieldVariant methods for TSQLRecord
(user: ab branch: trunk)
2011-01-28
14:28
[91380baf9a15b4b7] part of check-in [68ff01b70f] new Ansi7ToString function (user: ab branch: trunk)
07:30
[72859e3be578b7b5] part of check-in [57df69476d] added new TSQLRestServer.CreateSQLMultiIndex() method (user: ab branch: trunk)
2011-01-27
17:14
[dd0bb34f0866ce4c] part of check-in [5274188699f] can now generate PDF/A-1 files if the new PDFA1 property is set to true (user: ab branch: trunk)
2011-01-22
11:20
[251434fcdf97fb7c] part of check-in [d9cdb33736] LVCL compatibility check of the SQLite3 framework (user: ab branch: trunk)
2011-01-21
17:14
[9e3c0ad54c5efb65] part of check-in [5ea9700aef] minor updates (user: ab branch: trunk)
2011-01-19
16:31
[cc63d47dcaf2b47f] part of check-in [a4b62ca14f]
  • OnStringToUnicodeEvent is now called for all text, whatever the alignment is
  • new property BiDiMode, for formatting the text in right to left order
(user: ab branch: trunk)
2011-01-18
16:33
[cda6edca0c219ef2] part of check-in [cb424a5303] Fix for Ticket 6593f0fbd1 "JSON floats decimal separator depends on language settings" (user: ab branch: trunk)
08:12
[b16d11345de6588b] part of check-in [4dc8e101ec]
fixed issue with files >= 2 GB (thanks to sanyin for another report): memory mapped files are not well handled in this case -> direct read from disk is used for such huge files (but faster memory mapping is using for all files < 2 GB)
(user: ab branch: trunk)
2011-01-16
13:53
[cb4966b90ce5b6b4] part of check-in [b4b328f5cb]
  • fixed an issue which avoided to draw the report anti-aliaised when GDI+ 1.1 was installed
  • fixed a positioning issue in bookmarks or links in TGDIPages
  • some code refactoring
(user: ab branch: trunk)
2011-01-14
15:59
[146689a58937ab0c] part of check-in [240b95d479] minor update about huge (>4GB) files support (user: ab branch: trunk)
14:49
[607bc4299f804f7b] part of check-in [09826a0473] possible fix for files bigger than 2 GB (user: ab branch: trunk)
14:32
[a74d182c8e784cfb] part of check-in [22f2c581df]
  • fixed one issue (in SynGdiPlus) for displaying bitmaps in anti-aliased mode
  • added new DrawBMP overloaded method to add some bitmap as a (centered) paragraph, with some optional legend
(user: ab branch: trunk)
11:15
[d211b940bd0d665d] part of check-in [cad3c72348] live link navigation and bookmarks are now working in both TGDIPages and the PDF generation :) (user: ab branch: trunk)
2011-01-13
16:53
[0de7260019faa29b] part of check-in [419f66542c] first draft for having SynProject to generate directly pdf files + updated statistics in SQLite3 framework (user: ab branch: trunk)
2011-01-12
17:09
[52a1dce9f90c00cf] part of check-in [ba3dd70c7e] new SortCompareOperator() functions and associated TSortOperator type (user: ab branch: trunk)
13:09
[1817c037977f3dc9] part of check-in [e70518d907] new TSynTableFieldProperties.SortCompare method (a little bit slower, but more suitable than global functions - now we're prepared to tftArray kind of field) (user: ab branch: trunk)
13:08
[51e9b6a89f74bf45] part of check-in [ab5b06e56a] added generic unitary tests for TSynBigTableMetaData and TSynBigTableRecord classes (user: ab branch: trunk)
2011-01-11
11:21
[ca0c825cf40dfe7b] part of check-in [a016cce407] faster var integer reading (user: ab branch: trunk)
2011-01-10
16:30
[e051e6a4ce98b0ce] part of check-in [5f75d360a2] introducing new TSynBigTableMetaData class (user: G018869 branch: trunk)
2011-01-09
17:02
[41e52f2184369719] part of check-in [48c5274aa4] fixed some regression introduced with previous check-ins (discovered by our Unitary Testing suite) (user: ab branch: trunk)
14:08
[214cf436c0a01bc5] part of check-in [4ce0513940]
  • now handle tftBlobInternal
  • new WinAnsiToUnicodeString function and new TTextWriter.AddBinToHex method
  • fixed a major problem in TFileBufferWriter.WriteVarUInt32Array, with DataLayout=wkOffset and ValuesCount=1 - the same error occured in TFileBufferWriter.WriteVarUInt64DynArray with Offset=true and ValuesCount=1
(user: ab branch: trunk)
09:37
[f3dbb1356c113cda] part of check-in [8102e95e09] implemented a "LIMIT" parameter for the searches (could make it faster if only the first is to be retrieved) (user: ab branch: trunk)
2011-01-08
17:40
[cbac3150ab2b9c49] part of check-in [488f9c998b] tfoUnique kind of index now working (user: ab branch: trunk)
2011-01-07
17:38
[e4445ced2e98b087] part of check-in [767d7444ba] Indexes are now working as expected. Performance is great! :) (user: G018869 branch: trunk)
2011-01-06
21:59
[bc37d28dcabd2fd2] part of check-in [d3bb9ee15a] Fixed Delphi 2009/2010/XE compilation error (user: ab branch: trunk)
17:23
[562c09409989520b] part of check-in [9721f64583] a lot of improvements to Big Table - now works with fields within records (user: G018869 branch: trunk)
2011-01-02
16:51
[317eae87ca28c4a1] part of check-in [e93f01713e] TSynTable first finished draft (user: ab branch: trunk)
2010-12-30
10:05
[dea41d525e3d6509] part of check-in [70b3baf393] 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) (user: ab branch: trunk)
2010-12-24
09:18
[252353f2bf3fcd27] part of check-in [74b05c197b]
  • 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
(user: ab branch: trunk)
2010-12-23
17:11
[5bb3f3651e4d17f7] part of check-in [d42df4d80c] integrating Big Table into our SQLite3 framework (user: G018869 branch: trunk)
2010-12-22
16:27
[d936d39e16fcdf9d] part of check-in [c436699fc0]
NumericalID[] property is now available also in TSynBigTable (don't use it to loop through all items, but rather the dedicated GetIterating() method)
(user: G018869 branch: trunk)
2010-12-21
16:19
[feb9f4f5996974fd] part of check-in [02c35811f7]
  • SynBigTable: values or UTF-8 keys of fixed-size are now stored in the most efficient way
  • SynBigTable: new Update() methods, allowing to change the content of any record
  • SynBigTable: new GetPointer() methods, to retrieve a pointer to the data, directly in memory mapped buffer (faster than a standar Get() call)
  • SynBigTable: new GetAsStream() methods, to retrieve a data into a in-memory stream, pointing into the memory mapped buffer in most cases
  • SynBigTable: new GetIterating() method, which will loop into all data items, calling a call-back with pointers to each data element (very fast method)
(user: G018869 branch: trunk)
2010-12-20
19:55
[05069a013953027e] part of check-in [ba5634c4d6] minor fixes (user: ab branch: trunk)
16:47
[cd4f92b900404750] part of check-in [6b184a0814]
  • SynCommons: new TFileBufferReader and TFileBufferWriter objects, implementing very fast read/write access to huge files
  • this is a MAJOR update of SynBigTable: the file format changed (new magics $ABAB0004/5)
  • SynBigTablenow uses SynCommons unit (avoid too much duplicated code)
  • SynBigTable have buffered writing and reading to file: major speed up of the unit, since Windows file access API are dead slow; for instance, reading uses now memory-mapped files for best possible performance
  • TSynBigTableString has no 65535 key length limitation any more
  • SynBigTable: new Update() methods, allowing to change the content of any record
(user: G018869 branch: trunk)
2010-12-19
18:07
[c08306a04aa0e5fb] part of check-in [7c72527a02]
  • 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
(user: ab branch: trunk)
2010-12-17
16:03
[e80a8e47ea520633] part of check-in [54a20ced13]
  • 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.
(user: G018869 branch: trunk)
10:48
[7967e3c8049b2846] part of check-in [e1492ec886] new function sqlite3_value_numeric_type + speed improvements + 100% tests passed after inlined params integration (user: G018869 branch: trunk)
2010-12-16
17:58
[66d8fa24b0f72581] part of check-in [6a8c47527d]
  • 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)
(user: G018869 branch: trunk)
2010-12-13
15:44
[38714c38756aaca3] part of check-in [e361c5f996] update SQLite3 engine to version 3.7.4 (user: G018869 branch: trunk)
15:38
[c675f2623412314c] part of check-in [945e892c1c] 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) (user: G018869 branch: trunk)
2010-12-06
16:06
[80db08a8c4c0d74d] part of check-in [d4cd66ac72] 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 (user: G018869 branch: trunk)
2010-12-05
18:02
[581bba4a81ce0c1c] part of check-in [504f6a3df6] Some WinAnsi/UTF-8 and NormToUpper[] fixes (introduced new NormToUpperAnsi7[]) (user: ab branch: trunk)
12:37
[4dc96cdeb76b8ec0] part of check-in [1a67c40ae5] new IsWow64 and SystemInfo global variables (user: ab branch: trunk)
09:36
[47e8dca04b7226f4] part of check-in [0935de51aa] function IntegerDynArrayToCSV() now much faster (user: ab branch: trunk)
2010-12-03
19:48
[938172f05f298200] part of check-in [b3ec9056ea] code modification for Delphi 2009/2010/XE Unicode compilation (no more implicit string conversion warnings in zeos/core folder) (user: ab branch: trunk)
16:53
[50b30b46c26dadd4] part of check-in [ec82b36ee0] ZDBC draft upgrade + SynCommons refresh (user: G018869 branch: trunk)
13:35
[b1aba286d492a4d6] part of check-in [1f2c04f8de] new TRawUTF8List methods: BeginUpdate, EndUpdate, GetText, SetText, Text property (used e.g. in SynPdf) (user: G018869 branch: trunk)
2010-12-02
19:37
[a15edb342ca3b84c] part of check-in [8079a5e89d] enable compiling tests with LVCL (user: ab branch: trunk)
15:56
[166fa5d2d83eb0f4] part of check-in [cfe40c7362]
  • 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
(user: G018869 branch: trunk)
06:54
[4810ed651120a147] part of check-in [0c19394779] new method TRawUTF8List.AddRawUTF8List(List: TRawUTF8List) (user: G018869 branch: trunk)
2010-12-01
13:27
[1e015abe7883c056] part of check-in [cf001067c7] source code modified to be 7 bit Ansi (so will work with all encodings) (user: G018869 branch: trunk)
2010-11-30
16:18
[a150d8a2218b23a4] part of check-in [7810952a31] included fork of ZEOS library, using RawUTF8 as internal string type - draft version (user: G018869 branch: trunk)
2010-11-28
15:36
[3c6790ee972b442a] part of check-in [a6e4138561]
  • 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
(user: ab branch: trunk)
2010-11-19
13:24
[9a8074732ef363f7] part of check-in [b3c2cb4fde] Delphi XE identification (user: ab branch: trunk)
2010-11-04
08:07
[e7c685df2aae8592] part of check-in [f87059cfaa]
  • fix some obscure Delphi 2009 bug according to NativeUInt :(
  • fixed issue in TGDIPages.AppendRichEdit - see user feedback from http://synopse.info/forum/viewtopic.php?pid=671#p671
(user: G018869 branch: trunk)
2010-10-15
09:34
[4687e9b4f204aa89] part of check-in [33cf13ee26] update comments for taking Delphi XE in account (user: G018869 branch: trunk)
09:22
[bb55a1eb558f6366] part of check-in [71f0df2253] Version upgraded to 1.10, with internal SQLite3 3.7.3 engine (user: G018869 branch: trunk)
09:10
[0de1f4d2334775d3] part of check-in [9220184843673040b] code update to be compatible with Delphi 6 (Delphi 5 failed due to some obscure compiler bug) (user: G018869 branch: trunk)
2010-09-11
16:59
[853ce5aa21cb8381] part of check-in [d36a4c1389] new StringReplaceChars function (user: ab branch: trunk)
2010-09-05
13:55
[8b4f3d1eb9310266] part of check-in [933dd6ba2c] deleted deprecated DOS related code (used with DWPL Dos Extender) (user: ab branch: trunk)
2010-09-04
14:35
[3a03fcd256f962b7] part of check-in [b03e814c32] new GetExtended overloaded function, and new HttpPost function (user: ab branch: trunk)
2010-08-24
10:51
[95dd2f400ec8756c] part of check-in [33aa8e875b] 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. (user: ab branch: trunk)
2010-08-23
15:07
[63ee841897353c0f] part of check-in [2eaa56dac9] minor modifications (comments, debugging stuff) (user: ab branch: trunk)
2010-08-16
20:32
[bb6ec9b607c70e6c] part of check-in [f88e00aadf]
new definition of PtrInt/PtrUInt, to match NativeInt/NativeUInt types, available since Delphi 2007 - some code rewrite in order to avoid any implicit conversion from/to integer/cardinal
(user: ab branch: trunk)
2010-08-13
18:43
[3b68a3b04cb79ef8] part of check-in [a4b804d609]
  • new JSONEncodeArray procedures, to create JSON array content from supplied Delphi arrays (handle RawUTF8 text, double or integer arrays)
  • new AddCSV methods in TTextWriter handling Delphi arrays to be added as Comma-Separated-Values (handle RawUTF8 text, double or integer arrays)
(user: ab branch: trunk)
2010-08-11
16:26
[e2032ea09d022b6e] part of check-in [b149edbd1d] better handling of sftID in the User Interface and database use (e.g. creates a dedicated index for the TSQLRecord published fields inside TSQLRecord) (user: ab branch: trunk)
2010-07-27
20:06
[bff5828800309ce0] part of check-in [4c5adbef4f] Improve compatibility for Delphi 2009/2010 SQLite3 framework User Interface, and prepare release of main sample demo (user: ab branch: trunk)
2010-07-23
13:31
[22a1c47eca998a25] part of check-in [1993b2bf48] add sample about how is automated testing implemented in our framework (user: ab branch: trunk)
2010-07-20
10:31
[bc961eef641d4b8f] part of check-in [b78a7e27a5] new AppendCSVValues function (user: ab branch: trunk)
2010-07-18
19:18
[9b1bc19f9ee267b4] part of check-in [c37f546f85] optimization for Delphi 2010 (user: ab branch: trunk)
15:17
[3f20b074ace0d953] part of check-in [f7822afcf1] 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 (user: ab branch: trunk)
2010-07-16
15:43
[2d5af1b888748865] part of check-in [256d8258cc] SynCommons: new IsAnsiCompatible IsWinAnsiU functions + ambigous SameText() function rewritten as SameTextU() with UTF-8 decoding (user: ab branch: trunk)
2010-07-15
08:37
[6e40391153655e4a] part of check-in [1cdf5cf8ac] bug fixed in AnsiICompW() and TextWidth() + TextMeasure() (user: ab branch: trunk)
2010-07-05
16:33
[87f25bf29026a5e0] part of check-in [6523800bcc] bug fixed in RetrieveBlob/UpdateBlob methods and corresponding unitary tests addition (user: ab branch: trunk)
14:42
[e89fa0f9d335581c] part of check-in [84c3356292] url encoding full conformity to rfc3986 (user: ab branch: trunk)
2010-07-04
15:21
[84a302b5e0acb9c0] part of check-in [3661eb39f4] new function FileAgeToDateTime (user: ab branch: trunk)
14:08
[b063e8c604346e43] part of check-in [85d8175ea9] fix issue w/Delphi 2007 compiler version (user: ab branch: trunk)
13:57
[d1b41195667140a0] part of check-in [9ac9ae59f5] Delphi compiler version added to the embedded unitary tests report (user: ab branch: trunk)
2010-07-03
15:17
[108b8d08fe88b4a1] part of check-in [06168dc306] Trial of {$ifdef ANONYMOUSNAMEDPIPE} for anonymous named pipes: make no difference under Windows Vista/Seven -> undefined (user: ab branch: trunk)
2010-07-02
22:55
[f259732470da950b] part of check-in [2332a344e0] fixed issue in IdemPropName(... P2: PRawUTF8) function (user: ab branch: trunk)
17:19
[59d8a1599df76bee] part of check-in [0375ad50a7]
  • new direct methods to handle BLOB fields from clients or servers
  • new URI to GET or PUT BLOB fields: ModelRoot/TableName/ID/BlobFieldName
(user: ab branch: trunk)
2010-06-27
13:19
[be5893dd1001993e] part of check-in [b1fbb79f79] fix enabling PUREPASCAL compilation (user: ab branch: trunk)
2010-06-23
14:04
Added [f184ca0b0e0e7d17] part of check-in [9226a861e3] Initial Check-In of all Synopse components (user: User branch: trunk)