New features

Following is a list of additions to UltraLite introduced in version 10.0.1.

New platforms and devices Windows Vista is now supported in this release.

Improved SQL performance Historically, UltraLite would default to using the primary key index if, the UltraLite query optimizer determined that there
was not any benefit to using an existing index for the query.

With this version, instead of using the primary key, UltraLite will now access rows directly from the database pages. When
this happens, you can expect to see query results returned in a different order from previous releases, because rows are no
longer ordered by the primary key index. If the ordering of data is a concern, use an ORDER BY clause in your query. See Using direct page scans and Using index scans.

Database property and option accessibility via SQL Previous versions only allowed you to access database properties and options with methods from each UltraLite API. Now, UltraLite
SQL introduces the following statement and function, so that you can set and retrieve properties and options via SQL (including
Interactive SQL):

Increased number of concurrent connections UltraLite now supports more concurrent connections. A single database still supports 14 connections. However, the number of
overall concurrent database connections have increased:

8 databases and 16 concurrent connections for Palm OS and Symbian OS.

32 databases and 64 concurrent connections for all remaining platforms.

SQLCA restrictions can further limit connections

The total number of SQLCAs you can use to connect to the engine is 31. Keep this number in mind knowing that some components
use one SQLCA per database manager and one SQLCA per connection. That means, for example, if your application is using the
UltraLite.NET API, your real connection limit is reduced to a total of 30 connections only.

Commit flush operations Historically, any commit operation performed with either the COMMIT statement or API call would only complete after UltraLite
flushed a transaction safely to storage. With this release, you can now configure these behaviors and logically separate them
as distinct operations:

A logical commit now gives you the ability to roll transactions back in an application.

A checkpoint now gives you a recovery point after a failure. This allows you to recover to the last committed transaction
that has been flushed to memory.