Repository navigation
Installing
- TMS Smart Setup (free, from doc.tmssoftware.com/smartsetup/download: unzip the portable
tmssmartsetup.zipor run the installer, which gives youtms.exeandtmsgui.exe). Thentms install bero.boldfordelphi; Bold is on the community registry. Smart Setup clones this tag, buildsdclBoldfor Delphi 11, 12 and 13 and registers it in the IDE. - Manual: install the attached
dclBold280.bpl(Delphi 11.3),dclBold290.bpl(Delphi 12.3) ordclBold370.bpl(Delphi 13) through Component > Install Packages, and add theSourcefolders to the library path. - DPM (free, installer from github.com/DelphiPackageManager/DPM/releases; it adds
dpm.exeto the PATH and an IDE plugin). Thendpm install bero.BoldForDelphi <yourproject>.dproj(Delphi 11, 12 and 13, Win32) from the public feed at https://delphi.dev, or right-click the project in the IDE and choose Manage DPM Packages. DPM builds the design package into its cache and adds Bold's units to that project's search path.
Added
collect(role)evaluates in the persistence layer:TBSS_collectis implemented and installed, soself.child->collect(parent)and the implicitself.child.parenttranslate to SQL instead of falling back to in-memory evaluation (#96)IBoldDatabase.ReleaseAnotherDatabaseConnectionreleases a connection obtained fromCreateAnotherDatabaseConnection(#92)- The UniDAC adapter tests compile through a stub-unit
DebugUniDACbuild configuration, so UniDAC is never required; they run on SQL Server and SQLite, against the vendored UniDAC 10.4 on Delphi 12 or UniDAC 11 on Delphi 13 (#89) - Adapter-neutral persistence scenario tests run on every adapter (#88, #80, #89); end-to-end tests drive
TBoldDbCopyand the database validator threads (#92, #93, #94) BOLD_TEST_ENGINEselects the test database engine without editingUnitTest.ini;UnitTest\run_matrix.ps1runs the adapter x engine matrix (FireDAC and UniDAC on SQLite and SQL Server) with one summary tableUnitTest\sync_gui_dpr.ps1generates the GUI runner's unit list from the console runner, so TestInsight runs the whole suite (#84)- Package-manager manifests for Boss and DPM, and a release checklist (#87)
Fixed
- Data corruption on FireDAC: with
MultiRowInsertLimit = 1,PMCreatewrote the second new object's attribute values into the third and later objects saved in oneUpdateDatabase, because the per-row reset cleared a parameter snapshot instead of the query's real parameters (#88) UseBatchQuerieswas broken on both FireDAC and UniDAC (#80); it is now refused on engines where batching is unverified instead of failing at run time (#95)- Undo: the redo value space was orphaned when undoing a block with no changes, and
DoUndoInTransactionused a block after freeing it (#86) - UniDAC: cached queries leaked when a connection wrapper was destroyed (#90);
CreateAnotherDatabaseConnectioncreated aTUniConnectionnobody freed (#91);GetDatabaseErrorraised its own exception for providers without an error-code table, hiding the real database error (#98) TBoldDbCopyand the database validator dropped the extra connection wrappers they obtained (#92); validator worker threads were never freed (#93)TBoldDbCopyfailed silently on FireDAC:Prepareran before the parameter types were known, worker exceptions were swallowed, the row-count query leaked; failures are now logged and reported throughErrors(#94)FetchFromClassListfetched every invalid single link of the other-end class one by one, oneSELECTeach, when deriving a multilink from a current class extent; it now falls back to the single database query and leaves invalid members alone (#97)- The design packages could not be installed from the IDE after
LIBSUFFIX AUTO: a leftover LIB version in the project files made the IDE look fordclBold370.30.bplwhile the compiler produceddclBold370.bpl(#87) - The two ignored
FetchRefetchtests are rehabilitated and pin the classicDbFetchOwningMemberpath; the suite has no ignored tests (#83) - Three
TestBoldOclEvaluationtests assumed the creation order of unsaved objects in a class extent; they sort first - The Delphi 11.3 design package was built without a version resource: its Debug/Win32 configuration overrode
VerInfo_IncludeVerInfoto false - The 26.8.1 Delphi 12.3 package had lost
NoObjectSpaceTransactionsagain (the define restored for #85 was dropped by the version-stamping commit the same day); all three packages now declare it in the same project group (#85)
Changed
- Design packages are named by compiler through
LIBSUFFIX AUTO(dclBold280.bpl,dclBold290.bpl,dclBold370.bpl); the Delphi 12.1 CE package project is retired (#87) CanEvaluateInPSanswers True forcollect(role), where it previously answered False on every engine (#43, #96)- Test suite at 2182 tests (2182 passing, 0 ignored, 0 failed); code coverage 58.5%
Packages: dclBold280.bpl (Delphi 11.3), dclBold290.bpl (Delphi 12.3), dclBold370.bpl (Delphi 13), FileVersion 26.9.0.0.