UltraLite limitations

To compare UltraLite limitations with SQL Anywhere limitations, see SQL Anywhere size and number limitations.

Statistic Maximum for UltraLite
Number of connections per database Up to 14 for single threaded applications.
Number of concurrent open connections

Up to 8 for Palm OS.

Up to 32 for all other OS.

Total number of concurrent connections per application

Up to 16 on Palm OS.

Up to 64 for all other OS.

SQL communication areas Up to 63.
File-based persistent store (database size) 2 GB file or OS limit on file size.
Palm Computing Platform database size

128 MB (primary storage).

2 GB (expansion card file system).

Rows per table Up to 16 million.1
Rows per database Limited by persistent store.
Table size Limited only by database size.
Tables per database Limited only by database size.
Columns per table Row size is limited by page size, so the practical limit on the number of columns per table is derived from this size. Typically, this practical limit is much less than 4000.
Indexes per table Limited only by database size.
Tables referenced per transaction No limit.
Stored procedure length Not applicable.
Stored procedures per database Not applicable.
Triggers per database Not applicable.
Nesting Not applicable.
Number of publications 32 publications.
Page size 16 KB.
Row size

The length of each packed row must not exceed the page size. See Row packing and table definitions.

Character strings are stored without padding when they are shorter than the column size. This restriction excludes columns declared as long binary and long varchar as these are stored separately.

Cursors per connection The number of maximum allowable cursors on a given connection to an UltraLite database is 64 (all platforms).
Long binary/long varchar size Limited only by database size.

1 In some cases, changes to the row (deletes and updates) and other state information are maintained with the row data. This information allows those changes to be synchronized. So, the actual row limit can be smaller than 16 million, depending on the number of transactions on a table between synchronization, or whether the table is synchronized at all. See UltraLite transaction processing.