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 SELECT statement [UltraLite].

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

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.

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
UltraLite concurrency.

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.