Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 2 of 2 total
Thread ElevateDB 2.03 Now Available
Tue, Sep 22 2009 2:44 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Elevate Software is pleased to announce that ElevateDB 2.03 has been
released.

ElevateDB is our latest embedded database engine for use by developers
within their applications. It is available for the Borland Delphi,
C++Builder, and Developer Studio products, Lazarus (Free Pascal), the
CodeGear RAD Studio products, the Microsoft Visual Studio .Net products, and
any development environment that can use the ODBC architecture for data
access such as PHP or Java.

For more information on ElevateDB, please see our product information page
here:

http://www.elevatesoft.com/prodinfo?action=list

Distribution of ElevateDB is 100% royalty-free, including the ElevateDB
Server, ElevateDB ODBC Driver, and ElevateDB .Net Data Provider.

If you have any questions or would like to download a trial version, please
visit us at www.elevatesoft.com or email us at sales@elevatesoft.com


The following are the release notes for ElevateDB 2.03:

ElevateDB Version 2.03 Release Notes
====================================

2.03 Breaking Changes
---------------------

- The catalog format has been modified, so updating a catalog will cause it
to be unusable by any previous 2.02 or earlier version of ElevateDB.

- The LIKE operator may now be slightly slower for partial wildcard searches
(LIKE 'Test%' or LIKE 'Test_') when executed on a large table. This is due
to changes that were required for proper operation of the LIKE operator with
certain collations like German.

Delphi 2010 Support
-------------------

As of version 2.03, Delphi 2010 for Win32 support is included for both the
ANSI and Unicode versions of ElevateDB.

New 2.03 Features
-----------------

- The TEDBQuery, TEDBTable, TEDBStoredProc, and TEDBScript components can
now cache updates to their datasets via the BeginCachedUpdates,
ApplyCachedUpdates, and CancelCachedUpdates methods. In addition there is a
public property called CachingUpdates that will indicate when a dataset is
caching its updates.

- The TEDBSession component now includes the ExcludeFromLicensedSessions
property that can be used to exclude a session from the TEDBEngine
LicensedSessions count. This is useful for situations where you have a
utility session that you want to exclude from your own licensing
restrictions, such as when a session is used in a thread for performance
reasons.

Note
This property does not cause the session to be excluded from the ElevateDB
licensed session count, which is lower for all non-CS products.

- The TEDBSession component now includes the SaveStoreFileToStream,
SaveStreamToStoreFile, and CalculateCRC32ForStream methods for loading and
saving files to and from stores via streams. This is useful for situations
where you are storing non-ElevateDB files in an ElevateDB store and want to
manipulate them at the stream level.

- The TEDBDatabase component now includes an extra parameter for the
StartTransaction method that allows you to specify the total amount of time,
in milliseconds, that ElevateDB should wait for a successful transaction
lock on the database or tables specified in the StartTransaction method call
until it displays a lock error.

- The TEDBDatabase component now includes the TableInTransaction method that
allows you to check to see if a specific table is currently involved in a
transaction.

- The TEDBStoredProc component now supports executing functions in addition
to stored procedures. The result of the function is contained in a result
(TParam.ParamType-ptResult) parameter called "Result" that is automatically
created when the function is prepared via the Prepare method.

- The buffer manager in the engine has been updated so that buffer
references are resolved much quicker, especially over much larger buffer
sizes. This will allow multi-user, file-sharing applications (non-CS) to
specify higher buffer sizes for tables without encountering performance
penalties related to buffer management overhead.

- All native (non-managed code) versions of ElevateDB now have much better
index updating performance with indexed CHAR and VARCHAR columns. Internal
tests here indicate a performance improvement of around 40% for bulk
inserts.

- Insensitive query result sets are now buffered more aggressively,
especially for aggregate queries (GROUP BY), resulting in much better
performance.

- A SELECT statement containing sub-queries in the SELECT column expressions
can now return a sensitive result set. This means that a query like the
following can return a sensitive result set:

SELECT CustNo,
(SELECT Company FROM customer WHERE customer.custno-orders.custno) AS
Company
FROM orders

Furthermore, this means that updating the sensitive result set in a way that
changes the results of the sub-query will automatically cause the
"looked-up" value to change as necessary. This is extremely useful for
situations where, in the past, you would normally use a join and get an
insensitive result set.

- Views now automatically update their columns when the base tables or views
involved in the view SELECT definition change.

- The EXECUTE IMMEDIATE SQL/PSM statement can now accept parameters via a
USING clause. This is useful for situations where data ia already in a
variable and building a dynamic SQL statement is more difficult than using a
parameter. The following function illustrates such a case:

FUNCTION "GetTableVersion" (IN TableName VARCHAR)
RETURNS DECIMAL(19,2)
BEGIN
  DECLARE Version DECIMAL(19,2) DEFAULT 0;
  EXECUTE IMMEDIATE 'SELECT Version INTO ? FROM Information.Tables
     WHERE Name-?' USING Version,TableName;
  RETURN Version;
END

- There is a new INTO clause for SQL SELECT statements that allow you to
specify one or more OUT parameters as the target of a SELECT statement. Such
a statement doesn't return a result set at all, which is useful for
situations where you only want one, or a few, values from a specific row in
a table. However, the use of the INTO clause requires that the SELECT
statement only return a single row. The following SQL statement shows how
this works:

SELECT Version INTO :Version
FROM Information.Tables
WHERE Name-:TableName

- The operation of the LIKE operator has been modified to work properly for
special collation exceptions present in certain languages like German ('ss'
collates as a single character). The LIKE operator can now correctly handle
wildcard searches that involve such collation exceptions.

- There are now RENAME SQL statements for all configuration-level and
database-level objects that simply allow you to rename a given object.

- The ALTER TABLE SQL statement now includes a RENAME COLUMN clause that
allows you to rename a column.

- Triggers can now be enabled and disabled on a per-session basis via the
ENABLE TRIGGER and DISABLE TRIGGER SQL statements. The status of a trigger
can be queried via the Triggers Information schema table and the new Enabled
column.

- You can now specify the execution order of triggers by using the new AT
clause for the CREATE TRIGGER and ALTER TRIGGER SQL statements.

- SQL jobs, scripts, stored procedures, functions, and triggers can now
declare and use arrays. There is now also a CARDINALITY SQL function for
determining the actual length of an array.

- The SQL CAST function can now include format specifiers in the same way
that the IMPORT TABLE and EXPORT TABLE support them. For example, the
following SQL statement will return a result set where the LastInvoiceDate
TIMESTAMP column is in "m/dd/yyy h:mm:ss n" format:

SELECT CAST(LastInvoiceDate AS VARCHAR(24)
DATE FORMAT 'm/dd/yyyy' TIME FORMAT 'h:mm:ss n')
FROM customer

- The START TRANSACTION SQL statement now includes a TIMEOUT clause that
allows you to specify the total amount of time, in milliseconds, that
ElevateDB should wait for a successful transaction lock on the database or
tables specified in the START TRANSACTION statement until it displays a lock
error.

- All error messages now include a reference to the container object of the
object that is the target of the error message. If an index name is
referenced that does not exist, the error message will indicate that the
referenced index does not exist in the table associated with the reference.
For example, the following SQL statement:

DROP INDEX NonExistent FROM customer

will cause the following error message:

ElevateDB Error #401 The index NonExistent does not exist in the table
customer

whereas previously the error message would be:

ElevateDB Error #401 The index NonExistent does not exist

- There are two new Information schema tables:

TemporaryTables
TemporaryViews

The TemporaryViews table is used to show all derived tables that are
currently defined.

- There is a new OrdinalPos column for the following Configuration database
tables:

MigratorParams

- There is a new OrdinalPos column for the following Information schema
tables:

TableColumns
IndexColumns
ConstraintColumns
TriggerColumns
Triggers
ViewColumns
ProcedureParams

- The BACKUP DATABASE and RESTORE DATABASE statements have been altered to
now allow the backup or restore of the database catalog only.

- The ElevateDB Server now logs all server starts/stops, invalid logins, and
unauthorized IP address connection attempts to the logged events (LogEvents
table).

- All migrator modules now include a parameter called BlankNullStrings will
cause any NULL strings to be migrated over as blank strings (non-NULL)
instead.

- The Unicode DBISAM migrator modules now properly map any string columns in
the source table to the proper code page during the migration process. This
ensures that any multi-byte characters are properly mapped to the
appropriate Unicode characters.

- Jobs can now be scheduled on a MINUTE basis in addition to on an HOUR
basis. This is useful for incrementally backing up a database via
replication every minute or every few minutes.

- There is a new QUOTEDSTR SQL function for escaping single or double quotes
in a string.

- There is a new INTRANSACTION SQL function for determining whether the
current database (or a specific table in the current database) is involved
in a transaction.

- The DROP STORE SQL statement now also removes the target folder if the
store was local.

- You can now specify user-defined functions in generated columns. However,
there is still a restriction on using user-defined functions in computed
columns. This is due to how each type of column is populated in the C/S
architecture - generated columns are populated on the server during an
update, whereas computed columns are populated on-demand in the client
application.

New 2.03 ElevateDB Manager Improvements
---------------------------------------

As of version 2.03, the following improvements have been implemented in the
ElevateDB Manager:

- There is a new HTML help sub-system which currently contains the ElevateDB
SQL Reference and will soon contain complete ElevateDB Manager help content.

- You can now rename any object using the appropriate Rename task link.

- You can now create a copy of any object by using the appropirate Create
Copy task link.

- The script debugger now allows you to see the entire contents of a long
variable in the Variables tab, especially long SQL statements, by just
moving the cursor over the variable value. The length of time that the
variable contents are displayed has also been increased.

- All modal dialogs that execute SQL DDL statements (CREATE DATABASE, ALTER
TABLE, etc.) now immediately display any error messages and give you the
option of copying the generated SQL statement to a new SQL window for
further modification and/or execution after the cause of the error is
corrected.

- There is a new task for jobs called Execute Job as Script that allows you
to execute a job immediately as a script in a new SQL script window. This is
useful for testing a job in real-time instead of waiting for the scheduled
job to execute.

- There is a new Views button above the Explorer treeview that allows you to
choose how each node of the treeview should display its sub-items in the
Properties window. The view is specific to the node, but the global view for
all nodes can be changed via the Explorer/Preferences menu item under the
Default Object View option on the Explore tab of the Preferences dialog.

- The Reverse-Engineer Database task now supports the generation of an
upgrade script that will upgrade a source database to a specific target
database. In addition, you can now specify collation conversions that will
automatically convert source collation references to a new target collation
reference during the reverse-engineering process. This is useful when
reverse-engineering a Unicode database to a script that needs to be executed
with the ANSI version of ElevateDB or the ElevateDB Manager.

- Double-clicking on any Explorer treeview node now automatically brings
forward the Properties window for that node.

- You can now reverse-engineer any database object (excluding the databases
themselves and similar configuration-level objects like jobs or stores) by
dragging the object from the Explorer treeview to any SQL statement or
script window. The ElevateDB Manager will automatically add any necessary
EXECUTE IMMEDIATE statements if the object is being dragged and dropped on
an SQL script.

- There is now a Close All option for all folders in the Explorer tree view
that will close all sub-objects that are contained within that folder.

- You can now open any store file by clicking on the Open File task. The
ElevateDB Manager will automatically use the Windows shell to launch the
associated application (if one exists). This works for remote sessions also.

Note
The opened file is stored locally as a temporary file and you will be
prompted to propogate any modifications to the file back to the source file.
The ElevateDB Manager uses a CRC32 checksum to determine if the file has
changed.

- There is now an active index selection combo box for the table window, in
addition to being able to select an index by clicking on a grid column
header button.

- You can now drag and drop the grid column headers in order to re-order the
display of the columns in a table, including scrolling the column headers to
move a column to a position that is outside of the currently-viewable set of
columns.

- The table window grid column layout saving/loading has been modified so
that it automatically detects any changes in the base table columns and
reverts the column layout to match the base table. Previously you would have
to manually reset the column layout.

- All combo boxes that offer selections of objects display their drop-down
lists in alphabetical order for easier selection.

- The Create/Edit session dialog will now offer to create a non-existent
configuration folder, if such a folder is specified on the Local
Configuration tab.

- The F6 key now brings forward the Properties window for the
currently-selected node in the Explorer treeview.

- The parameters entry for SQL statements now allows you to specify the data
type of any parameter. This is useful for situations where ElevateDB cannot
determine the data type of a parameter, such as when a parameter is used in
a CAST() SQL function.

- INTERVAL types, DECIMAL/NUMERIC, and BLOB/BYTE types are now displayed
properly in grids and can be entered properly in their textual form.

- DECIMAL/NUMERIC and FLOAT/DOUBLE types now require that the period be used
for the decimal separator for all inputted numbers. The period is the
standard ANSI decimal separator character.

--
Tim Young
Elevate Software
www.elevatesoft.com

Tue, Sep 22 2009 5:39 PMPermanent Link

Lance Rasmussen

Jazzie Software

Avatar

Team Elevate Team Elevate

Sweeeeeet.  Looking forward to the new ones.  I have a project I need
to do in D2010.

Lance
Image