Known Issues for Native Object API

Learn about known issues and apply workarounds for Native Object API and custom development.

Issue NumberDescription
CR 710279
Exception not thrown when failing to set personalization parameters or synchronization parameters.

When an application starts up for the first time, you should first perform an initial synchronization before setting personalization parameters and synchronization parameters. Without an initial synchronization, setting the personalization parameters and synchronization parameters fails.

In that case, although the saving of the personalization parameters and synchronization parameters fails, no exception is thrown, as if these operations succeed.

Workaround: Ensure that you perform an initial synchronization before setting personalization parameters and synchronization parameters.

CR 709534
Synchronization notification does not mean that asynchronous operation replay is complete.

In an Android, BlackBerry, or Windows or Windows Mobile application, when you call DBClass.beginSynchronize(synchronizationGroups,userContext,uploadOnly) with AsyncReplay=true, the userContext is passed to the server and used in CallbackHandler.onSynchronize() with SynchronizationStatus=ASYNC_REPLAY_COMPLETED. If CallbackHandler.onSynchronize() returns CONTINUE, the Object API uses the same userContext for the triggered synchronize

Workaround: Call beginSynchronize manually from the onSynchronize callback and return CANCEL to disable the triggered callback.

CR 709392
Missing error code methods for the BlackBerry client in com.sybase.persistence.SynchronizationContext.

The BlackBerry client is missing the following Object API methods for getting and settings error codes and messages in com.sybase.persistence.SynchronizationContext:

  • getErrorCode
  • setErrorCode
  • getErrorMessage
  • setErrorMessage

Workaround: Patch 01 fixes this issue. See the Fixed Issues in Patch 01 in the Sybase Unwired Platform 2.1 ESD #3 Patch 01 section of this release bulletin.

If you cannot apply the patch, there is no workaround.

CR 709353
Cannot pass cookie through Personalization Key in RBS.
Workaround: Use the following code:
SUPStringProperties *cookies = [smnwTests verizonCookies]; 
[[[SUPApplication getInstance] connectionProperties] setHttpCookies:cookies];
CR 709073
Operation replay records may not be processed correctly.

In some cases, operation replay records that you upload to the Unwired Server are not processed in the correct order on the server. For example:

[customer create];   // inserts a row into the MBO table
[customer submitPending];   // inserts a row into the operation replay table
[customer delete];   // deletes the row from the MBO table (because of server-side processing, does not remove the row from the operation replay table)
[customer submitPending];   // does nothing 

Workaround: Call cancelPending operation to cancel any pending record before submitting another operation.

CR 708708
Ultralite database is not automatically backed up on iOS devices.

Due to an Ultralite database limitation, the Ultralite database file is stored in the application Documents directory and the "do not backup" attribute of the file is set. The data is not automatically backed up.

Workaround: If needed, perform a manual backup of the data.

CR 708707
Best practice for deleting the client database

Asynchronous operation replay is enabled by default. When the application is connected (by Application.StartConnection() or Application.RegisterApplication), the application may receive background notifications and will trigger a synchronize or other database operation. If you try to delete the database, you may receive database exceptions.

Workaround: Before deleting the database, stop the application connection (Application.StopConnection()).

CR 708624
Synchronization with Network Edge Auth SSO on BB device.

When synchronizing with Network Edge Auth SSO on BlackBerry device UltraLiteJ Error[-85]: Communication error (HTTP 500, URL http://ucperflab01.sybase.com//rs/client/rs_client.dll/supnw.rep1 appears.

Workaround 1: Set Synchronization Server URL Suffix of Application Connection Templates to rs/client/rs_client.dll/{RBSFarmID}.

Workaround 2: Set the following line in your connection profiles:
ConnectionProfile sp = SSOWSDB.getSynchronizationProfile(); 
NetworkStreamParams streamParams = sp.getStreamParams(); 
streamParams.setUrl_Suffix("rs/client/rs_client.dll/{RBSFarmID}"); 
sp.save(); ...
CR 692374
Enabling compression incurs additional processing on the device and the server side to optimize the amount of data to be transferred over the network.

Workaround: Carefully evaluate whether the compression trade-off is appropriate in the deployment environment, and carefully size the server capacity to support it. If appropriate in a particular environment, follow the Sybase Unwired Platform Developer Guides to enable compression.

CR 690308
The query.getRow() API may not return the correct row to BlackBerry clients.

For example, in this connected result set for a BlackBerry client:

Query query = new Query(); 
query.select("c.id as Id, c.fname as Fname, c.state as countState"); 
query.from("Customer", "c"); 
query.setConnectedResultSetEnabled(true); 
QueryResultSet rs = MyDatabase.executeQuery(query); 
rs.executeQuery(); 
rs.last(); 
rs.afterLast(); 
rs.previous();
rs.getRow() may not return the correct value.

Workaround: Do not use the query.getRow() API QueryResultSet.previous\next return boolean to indicate if the current position is valid. Rely on the return value instead.

CR 675716
SQLite cannot support create operations with more than 3MB of data, which is roughly 128 columns at 64KB per column on Windows Mobile devices.

In Windows Mobile applications that use message-based synchronization, when a row reaches 3MB or more, and the client invokes the SQLite create operation during subscription, an internal exception is generated, data import fails, and the import operation fails to commit the transaction.

Workaround: None.