Elevate Software


Login Login

ProductsBulletSalesBulletSupportBulletDownloadsBulletAbout





Home » Elevate Software Blog » ElevateDB 2.29 Released with 32-bit MacOS Support

Icon ElevateDB 2.29 Released with 32-bit MacOS Support

Posted by Tim Young on Mon, Nov 26 2018
ElevateDB 2.29 is now available for download. If you're an existing customer, then you should be receiving an email shortly with download instructions.

The breaking changes and new features for the ElevateDB VCL/LCL, DAC, and PHP products are below. In addition, this release contains several bug fixes, which are detailed here.

2.29 Breaking Changes
The following are breaking changes in 2.29:
  • The MIGRATE DATABASE statement now disables all default column value assignments when migrating table rows. The migration functionality uses INSERT statements to migrate rows from the source database to the target database. Previously, the default column value assignments could cause primary and unique key conflicts when columns containing NULL values were migrated to the new database.


  • The lightweight word generator module, text filter module, and external module templates have been changed so that only module-relevant code is required in the actual project, and all ElevateDB module-specific code is part of engine-level units, similarly to the non-lightweight modules. The following is the implementation code for the new lightweight external module template project's main unit (Unit1):

    implementation
    
    procedure TEDBLightweightExternalModule1.DoRoutine(const RoutineName: String);
    begin
       { Fill in the routine (function or procedure) execution code here.
         You can have multiple functions and/or procedures in a module.
         Use the RoutineName parameter to determine which function or
         procedure is being executed.  Use the public ParamValues property of
         this external module (TEDBParamValues object) to access the parameters to
         the function or procedure.  Do not modify the ParamValues property other
         than to get/set the parameter values or Null flag.  Adding, removing,
         or changing the data type or parameter type of a parameter can cause
         serious problems.
    
         NOTE: The TEDBParamValues class is an internal ElevateDB engine class,
         and is used instead of the normal TParams class to bypass the inclusion
         of the Delphi VCL/DB units that cause the DLL size to bloat.  You can find
         out the various properties and methods available for this class in the
         edbvalue.pas and edbparam.pas units for ElevateDB.  If you are not
         comfortable working with an internal class such as this that contains no
         documentation, then you should use the normal external module template
         project that is installed into the Delphi object repository }
    end;
    
    initialization
       {  You *must* set the external module class, otherwise your class
          will not get instantiated !!! }
       LightweightExternalModuleClass:=TEDBLightweightExternalModule1;
    end.

    The key is the use of the initialization section to assign the class type for all lightweight modules that are instantiated by ElevateDB for this lightweight module.


  • For both the normal and lightweight word generator, text filter, and external module template projects, the exports clause has been moved from the .dpr (project file) to the main unit for the template projects. This change was required due to the Delphi MacOS compiler requirement that any library exports clauses not appear in the project files. You will need to make sure to adjust any existing word generator, text filter, and external module projects accordingly if you plan on using them with the MacOS version of ElevateDB.
2.29 New Features
The following are the new features in 2.29:
  • ElevateDB now supports the 32-bit MacOS compiler for RAD Studio XE4 and higher. RAD Studio XE2 and XE3 lack some necessary platform APIs, so support for those compilers will not be possible.


  • ElevateDB now includes SQL statement performance logging that can be used for determining which SQL statements are taking the longest to execute. There are new ENABLE STATEMENT LOGGING and DISABLE STATEMENT LOGGING statements, along with a new LoggedStatements Table system information table for reviewing which statements have been logged.


  • The PUBLISH DATABASE statement now includes a new BY clause that allows you to specify how you want the updates for a given table or tables to be logged.


  • The MIGRATE DATABASE statement now includes a new START AT TABLE clause that allows you to specify the table at which the migration should start. This is useful when the migration of a large database fails for an unexpected reason, and you don't want to start the migration from the first table in the database again.


  • The LOAD UPDATES statement now includes new MERGE DUPLICATE INSERTS and INSERT MISSING UPDATES clauses which allow for further control over how primary key constraints are handled during the loading of updates.


  • There are new ENABLE DEFAULTS, DISABLE DEFAULTS, ENABLE GENERATED, and DISABLE GENERATED statements that allow you to selectively enable/disable the default column value and generated column value functionality, respectively, in ElevateDB.


  • The join performance in ElevateDB has been improved, especially for SELECT statements that include joins performing lookups. Such joins tend to include lots of repeating driver table values, and ElevateDB uses this information to cache prior join projection sets and avoid re-building them.


  • There are new SET STATEMENT CACHE and SET PROCEDURE CACHE statements for setting the statement and function/procedure cache sizes for jobs.


Tags: ElevateDB, New ReleasesPermanent Link

Comments Comments (0) You must be logged in to comment

Image