UltraLite SELECT statement The default for UltraLite SELECT statements that do not explicitly contain a FOR clause is now FOR READ ONLY. This change
allows UltraLite to choose more optimal plans for queries when updates are not permitted. See UltraLite SELECT statement.

UltraLite SYNCHRONIZE statement A new statement for synchronizing an UltraLite synchronization profile or specific synchronization options. See UltraLite SYNCHRONIZE statement

You can now use the Validate Database Wizard in Sybase Central to validate an UltraLite database. The Validate Database option is available on the Tools menu.

Support for events and notifications UltraLite now supports events and notifications. Notification messages are sent to registered queues or connections when events
occur. User events may also be defined and triggered by applications. APIs for events and notifications are provided in each
supported language. Additionally, a SQL function is provided to access the API functionality.

UltraLite support for isolation levels Now, by default, connections are isolated from each other. Uncommitted changes by other connections and downloads are not
visible until committed.

UltraLite ALTER DATABASE SCHEMA FROM FILE statement You can now use the ALTER DATABASE SCHEMA FROM FILE statement to alter an UltraLite schema. The ALTER DATABASE SCHEMA FROM
FILE statement replaces the 9.0.2 schema upgrade feature that was implemented with the now removed UpgradeSchemaFromFile or
ApplyFile methods. Use either the ulinit or ulunload utilities to ensure that the DDL statements required are syntactically
correct.

Extract Database Wizard behavior changes You can now exclude tables from the extraction process, and the Extract Database Wizard now omits publications with duplicate names from the list of available publications. See Upgrading version 9 and earlier UltraLite databases.

UltraLite client version and build number added to MobiLink log files During synchronization, UltraLite clients now add their version and build number to the MobiLink server log. See:

Background synchronization support You can now begin a synchronization on a separate thread at any point in your application and UltraLite will upload only the
rows that were committed at the time the upload began. You can now modify the database during the upload and commit your changes
without affecting the upload. Any rows committed while the upload is in progress are ignored by the upload. See Concurrency in UltraLite.

Enhanced GUID identifier support In previous versions of UltraLite, runtime allowed the input and output of UUID (Universally Unique Identifier) or GUID (Globally
Unique Identifier) identifiers as either 16-byte binaries or strings. An endian conversion made the identifiers compatible
with GUID structs. In UltraLite 11, GUID structs can be explicitly input and output from the runtime and the endian conversion
is not required.

ul_stream_error struct In UltraLite 11, the stream_id, stream_context, and error_string_length fields are removed. In addition, the error_string
field has been changed from a user-supplied char * to a static char array. See ul_stream_error struct.