SQL Anywhere Bug Fix Readme for Version 12.0.1, build 3298



Choose a range of build numbers for which to display descriptions.
For example if you want to see what was fixed since the last EBF you applied then change 3152 to the build number of that last EBF.
Click Update Readme to make those changes take effect.
to Update Readme

Contents



Description of download types

Express Bug Fixes

A subset of the software with one or more bug fixes. The bug fixes are listed below. A Bug Fix update may only be applied to installed software with the same version number. While some testing has been performed on the software, you should not distribute these files with your application unless you have thoroughly tested your application with the software.

Maintenance Release

A complete set of software that upgrades installed software from an older version with the same major version number (version number format is major.minor.patch). Bug fixes and other changes are listed in the "readme" file for the upgrade. For answers to commonly asked questions please use the following URL: Frequently Asked Questions



12.0.1 New Features

This section contains a description of new features added since the release
of version 12.0.1.


SQL Anywhere - DBLIB Client Library

================(Build #3292 - Engineering Case #659363)================ The Timeout, SendBufferSize, and ReceiveBufferSize TCP options now have upper limits. Values specified above these limits will result in connection failure (-832). The limits are: Timeout: 3600 seconds SendBufferSize: 1048576 bytes (1 MB) ReceiveBufferSize: 1048576 bytes (1 MB)

SQL Anywhere - Other

================(Build #3284 - Engineering Case #657471)================ The PHP external environment and the PHP driver now support PHP versions 5.3.3, 5.3.4, and 5.3.5.

SQL Anywhere - Server

================(Build #3287 - Engineering Case #657712)================ Additional information is now saved for graphical and long plans. This additional information includes: - Known values for expressions are now dumped in the plans. For example, a stored procedure parameter known at the optimization time is dumped as 'parm1[100]' if its name is 'parm1' and its known value is '100'. - For long plans generated by the application profiling, extra information related to the optimization process is now dumped. For example, 'Plan [ Total Cost Estimate: 3.5657, Costed Best Plans: 1, Costed Plans: 13, Optimization Time: 0.074541, Estimated Cache Pages: 590 ]' This type of information is already present for long plans generated by calling the explanation() function. - Information related to the cached plan of a statement is now dumped in its long plan. - Predicates used to generate fence posts for a partial index scan are now dumped in the long plans generated by the application profiling. This type of information is already present for long plans generated by calling the explanation() function. Also, graphical plans with statistics saved during tracing did not actually contain any statistics. This has been fixed.

SQL Remote for Adaptive Server Anywhere - SQL Remote Message Agent

================(Build #3276 - Engineering Case #655157)================ If there were any missing messages, SQL Remote would have asked for a resend after it had reached its receive polls given by the -rp option. This resend logic could have caused the publisher to re-scan the transaction log(s) and slow down replicating new transactions, especially on heavy load databases. This has been changed so that when a message in a multi-part message series (SQL Remote will generate multiple messages for a single transaction to form a multi-part message when the transaction is too big to fit in a single message) is missing, SQL Remote will not immediately ask for a resend, if the received messages are not followed by any messages that contain a commit or any messages that belong to another multi-part message series. This new logic will help users who need to shut down or kill SQL Remote when it is sending multi-part messages to its subscribers.



12.0.1 Bug Fixes

(see also New Features)
This section contains a description of bug fixes made since the release
of version 12.0.1.

MobiLink - Java Plugin for Sybase Central

================(Build #3291 - Engineering Case #658860)================ Sybase Central would have crashed when using the QAnywhere plugin to define a property for a connector and the property was given both a blank name and value. Now, the creation of properties with blank names is prevented, as these are meaningless in any case. A message box indicating that the property name must not be empty is displayed. ================(Build #3284 - Engineering Case #657284)================ The MobiLink Server log file viewer in Sybase Central might not have listed all synchronizations in a given log file separately if the log file contained messages from more than one run of the MobiLink Server. This has been fixed. ================(Build #3284 - Engineering Case #657068)================ In the MobiLink Server Log File Viewer, selecting a synchronization could have resulted in the window becoming unresponsive if the synchronization contained hundreds of thousands of messages. This has been fixed. Also, it was noticed that synchronizations were not initially listed in chronological order if the log file contained output for more than one run of the MobiLink Server. This has also been fixed. ================(Build #3281 - Engineering Case #656863)================ If a synchronization model had script errors that were fixed without opening the Events editor or saving the model, attempting to deploy the model would have erroneously failed because of a script error. This has been fixed. ================(Build #3280 - Engineering Case #656291)================ If a Destination Alias defined in a Server Store was deleted, the alias was still shown in Sybase Central until the QAnywhere server completed the deletion. That could have taken up to a minute, or could never have happened if the QAnywhere server was not running. If deleting the alias was tried a second time, an obscure error message would have been displayed saying that the alias could not be deleted. Now, the Destination Alias is removed from Sybase Central as soon as the user deletes it, the same as in earlier versions of Sybase Central. ================(Build #3278 - Engineering Case #655987)================ The "Apply" button on the property sheet for a Remote Task was not enabled when various changes were made. Now, the button is enabled correctly. ================(Build #3275 - Engineering Case #654759)================ Changes to the members list were not saved when the OK button in the property sheet for a destination alias. Also, the Apply button was not enabled after a member was added, removed, or edited. Both of these problems have now been fixed. ================(Build #3268 - Engineering Case #653058)================ When creating a rule with a "Custom" schedule type, the schedule that was saved could have been incorrect if "Run rule every" was turned off in the "Schedule Editor" window. The rule was saved such that it was run every 10 minutes. This has been fixed. ================(Build #3266 - Engineering Case #652577)================ Sybase Central could have crashed while the property sheet for a client message store was open, if adding a new property was started, but then the action was cancelled. This has been fixed.

MobiLink - Monitor

================(Build #3289 - Engineering Case #658482)================ When a MobiLink Monitor instance that already had a horizontal scroll bar, was connected to a MobiLink server, the Utilization Graph time scale (if Utilization Graph was enabled) would have been different than the Chart time scale. After being connected long enough for the horizontal scroll bar to be redisplayed, the scroll bar position would have been incorrect and the Overview Marquee Tool would have fluctuated between the inconsistent time scales. This has been fixed. A workaround is to use the Marquee Tool, or change the zoom to fix the display, or disable the Utilization Graph to prevent the problem. ================(Build #3286 - Engineering Case #657979)================ The MobiLink Monitor's Zoom To Selection menu or toolbar button might not have panned to the selected synchronization until it was used a second time. This has been fixed. ================(Build #3268 - Engineering Case #653055)================ Any parameters entered on the MobiLink Monitor's command line with a Multibyte Character Set would have been mangled. This has been fixed.

MobiLink - Relay Server

================(Build #3298 - Engineering Case #660995)================ When connected to a Relay Server, and no Outbound Enabler providing the backend service had connected yet, the connection was expected to timeout within the application timeout time specified by the client. However on IIS7, some J2SE http clients may have become stuck writing to a server that was no longer reading and eventually failed the write and then perform a delayed internal retry without processing the response sent by the web server. This change modifies the Relay Server to provide the expected fail fast experience according to the timeout against such J2SE clients. ================(Build #3291 - Engineering Case #658710)================ When the Relay Server was being reconfigured, a crash may have occurred in the rs_client.dll, and all http requests served by the same worker process would have failed. The web server would then have replenished the worker pool and the Relay Server would have continued to operate with the new configuration. The issue is highly timing sensitive and is very difficult to reproduce. This crash has now been fixed. ================(Build #3284 - Engineering Case #655574)================ The integrated Outbound Enabler library was not being unloaded correctly when the Mobilink server shutdown. The library eventually unloaded when the MobiLink server executable exited and no bad side effects where observed as a result, but this condition is now fixed. ================(Build #3283 - Engineering Case #656716)================ The Relay Server could have leaked heap memory under the following conditions: - On the response to the first HTTP request in the session, or specifically, anytime a cookie was set, if the response was long and came in small packets. - A small number of bytes were leaked on Upchannel and Dnchannel creation. This has been fixed. ================(Build #3282 - Engineering Case #657026)================ The MobiLInk server would immediately refuse to startup, if it could not make any connections to the consolidated database, even when it was running as a Windows service. This behaviour has changed so that the MobiLink server will retry to make connections, when it is running as a Windows services. The retries are once a minutes for ten minutes. If it still cannot make a connection after that, it will refuse to startup. ================(Build #3267 - Engineering Case #652382)================ The Relay Server did not work with a Relay Server Outbound Enabler (RSOE) that was behind an HTTP 1.0 proxy. The Relay Server has now been fixed to adapt to HTTP version downgrades done by an HTTP 1.0 proxy, and is needed when working with a 12.0.1 RSOE in conjunction with a HTTP 1.0 proxy.

MobiLink - RelayServer plug-in for Sybase Central

================(Build #3278 - Engineering Case #655989)================ Sybase Central would have crashed whenu attempting to open a Relay Server configuration file which was zero-length, or that contained only whitespace. This has been fixed. ================(Build #3273 - Engineering Case #654244)================ On some Chinese Windows systems, the fields for entering the MAC address for back end servers was too narrow to see both digits of each byte of the address. This has been fixed.

MobiLink - SA Client

================(Build #3298 - Engineering Case #650856)================ Synchronizations using HTTP-based communication protocols (including HTTP, HTTPS and other encrypted HTTP protocols) could have failed intermittently. When synchronizations failed, they would do so after the download had been applied and committed, and would have reported an error message like: "Data read failed. Requested 2 bytes but got 0 bytes." When this occurred the MobiLink server would have reported the error: "Connection was dropped due to lack of network activity". These failures were only likely to occur when applying the download to the remote database took longer than the stream timeout interval, which is 4 minutes by default. This problem has now been resolved ================(Build #3278 - Engineering Case #655955)================ Several memory leaks have been fixed in the MobiLink Client. ================(Build #3278 - Engineering Case #655953)================ Several memory leaks have been fixed in the MobiLink client. These leaks would primarily affect applications using the dbmlsync API. ================(Build #3272 - Engineering Case #653930)================ The Console utility could have stopped refreshing database and/or server properties after changing the set of properties which were displayed, even after it was restarted. The problem was sensitive to the speed with which properties were selected or unselected. This has been fixed. ================(Build #3263 - Engineering Case #651692)================ When a plug-in failed to load on startup, other plug-ins may then not work correctly. This has been fixed.

MobiLink - Streams

================(Build #3275 - Engineering Case #650719)================ After a failed download, an attempt to restart the download may have failed and reported a "Protocol Error" or a read failure. This has been fixed.

MobiLink - Synchronization Server

================(Build #3289 - Engineering Case #658453)================ When using MobiLink synchronization and timestamp-based downloads with an Oracle Real Application Cluster (RAC) system, there is a chance of missing rows to be downloaded if the clocks of the Oracle cluster nodes differ by more than the time elapsed between the MobiLink server fetching the next last download timestamp and fetching the rows to be downloaded. This problem is unlikely on a RAC system with synchronized node clocks, but the likelihood increases with larger node clock differences. A workaround is to create either a modify_next_last_download_timestamp or modify_last_download_timestamp script to subtract the maximum node clock difference. Note that at least since version 10i, Oracle has recommended using Network Time Protocol (NTP) to synchronize the clocks on all nodes in a cluster, and NTP typically runs by default on Unix and Linux. With cluster nodes properly configured to use NTP, their clocks should all be within 200 microseconds to 10 milliseconds (depending on the proximity of the NTP server). Since Windows Server 2003, the Windows Time Service implements the NTP version 3 protocol and it runs by default. Also, as of version 11gR2, Oracle Clusterware includes the Oracle Cluster Time Synchronization Service (CTSS) to either monitor clock synchronization or, if neither NTP or Windows Time Service is running, it will actively maintain clock synchronization. However CTSS and Windows Time Service are less accurate than NTP, To avoid missing rows when Oracle RAC node clocks differ by up to one second more than the time between fetching the next_last_download_timestamp and the rows to be downloaded, now the MobiLink server will subtract one second from the next_last_download_timestamp fetched from the consolidated database, if 1) the Oracle account used by the MobiLink server has execute permission for SYS.DBMS_UTILITY, 2) the consolidated database is an Oracle RAC system, and (only for MobiLink version 12.0.0 and up) 3) there is no generate_next_last_download_timestamp script. For Oracle RAC node clocks that may differ by greater amounts, you can avoid the problem by defining a generate_next_last_download_timestamp, modify_next_last_download_timestamp or modify_last_download_timestamp script to compensate for the maximum node clock difference. ================(Build #3286 - Engineering Case #657869)================ If the MobiLink Server's memory use grew more than 4GB in less than 5 minutes, the TRACKED_MEMORY ppv value would have been incorrect. As a consequence, for all 12.0.1 platforms and non-Windows 12.0.0 platforms, the MobiLink server cache could have erroneously shrunk and not recovered. This has been fixed. A work around is to use a larger -cinit option value, and if the problem persists to disable dynamic cache resizing by specifying the same value for -cmax and -cmin. Also, on 12.0.0 for Windows, the cache could have failed to stabilise. This has also been fixed. ================(Build #3277 - Engineering Case #655780)================ The method MLResultSet.getBigDecimal(L/java/lang/String;) unnecessarily threw a 'method not supported' exception. This has been fixed. ================(Build #3273 - Engineering Case #653183)================ The NUM_CONNECTED_SYNCS ppv metric and the "Synchronizations", "Started Synchronization Rate", "Synchronizations Started", and "Unknown Connected Clients" metrics incorrectly considered syncs that had failed during the download and were waiting to be restarted as being connected and so would show an incorrect value in the log or in the SA Monitor. Also, as a consequence, the server would prompt for confirmation to kill active syncs during hard shutdown even if all the syncs in the system are waiting to be restarted. This has been fixed. ================(Build #3265 - Engineering Case #652263)================ The usage text for the Relay Server Outbound Enabler didn't describe what were the valid options for the -cr option. This has been corrected so that the values are now listed for the tcp options, server certificate options, and client certificate options. In addition, http authentication options, proxy options, and proxy authentication options, have been added in version 12.0.1. ================(Build #3153 - Engineering Case #660428)================ The MobiLink server could have crashed during shutdown if user spawned Java threads printed to System.out or System.err after the ShutdownListeners were notified of shutdown. This has been made much less likely to happen. A work around is to ensure all user threads are stopped before the ShutdownListeners return.

MobiLink - iAS Branded ODBC Drivers

================(Build #3292 - Engineering Case #657721)================ There was a memory leak in the iAS ODBC driver for Oracle. The memory leak would have occurred when an application tried to make a connection but the ODBC driver was not able to obtain a valid database connection. This problem has now been fixed.

MobiLink - scripts

================(Build #3284 - Engineering Case #657397)================ When the consolidated database was running on an Oracle server, the MobiLink server could have displayed the error: 'ORA-00001: unique constraint ... violated' and then refused further synchronization requests. This would have occurred when the MobiLink server schema in the consolidated database was upgraded from a version earlier than 11.0.0, and the synchronization request was for a new MobiLink user and/or MobiLink remote database. This problem has been fixed in the upgrade scripts for Oracle. The following steps can be used to correct the problem if the Oracle consolidated database had already been upgraded with the old upgrade scripts: 1) Shut down all MobiLink servers; 2) Execute the SQL file against the Oracle consolidated database with the following command line: sqlplus LoginID/Password@TNSServerName @%SQLANY12%\MobiLink\Upgrade\fix_ora.sql Replace the LoginID, Password, and TNSServerName in the above command line with your own login information.

SQL Anywhere - ADO.Net Managed Provider

================(Build #3286 - Engineering Case #657542)================ The results of an Entity DAta Model query could have been non-deterministic. For example, having a GridView with the properties "AllowPaging" and "AllowSorting" set to "True", would have returned a "Result is non-deterministic" warning (SQLCODE 122). This has been fixed by adding an ORDER BY clause to the generated SQL. ================(Build #3280 - Engineering Case #656481)================ An application using the ADO .Net provider, and calling the method SAConnection(), could not have successfully connected to an IQ 12.7 server. A run-time error (iAnywhere.Data.SQLAnywhere.SAException) would have occurred when the provider tried to parse the server version string. This problem has been resolved. ================(Build #3276 - Engineering Case #654446)================ If there were multiple applications running simultaneously, the ADO.NET provider could have failed to load dbdata.dll. This has now been fixed.

SQL Anywhere - DBLIB Client Library

================(Build #3297 - Engineering Case #660204)================ Specifying a TCP timeout value of more than 2147 seconds could have caused connection failures. This has been fixed. ================(Build #3294 - Engineering Case #659643)================ An application could have crashed if it was attempting an Integrated Login or Kerberos connection and the connection to the server was lost. This could have occurred if the server was stopped or terminated during the connection. This has been fixed.

SQL Anywhere - ODBC Client Library

================(Build #3286 - Engineering Case #657826)================ When using the Microsoft ODBC Data Source Administrator, a crash may have resulted if an encrypted password had been specified and the "Test Connection" button was used. This has been fixed. ================(Build #3267 - Engineering Case #652752)================ When starting dbisqlc, or an ODBC application with a connection string containing LINKS=TCPIP, if there is an error connecting the connection dialog is displayed. It was incorrectly defaulting to "connect to a running database on another computer", losing the LINKS=TCPIP setting. If TCP parameters were specified, such as LINKS=TCPIP(PORT=2638), then it worked correctly. This has now been fixed.

SQL Anywhere - OLEDB Client Library

================(Build #3291 - Engineering Case #658887)================ The OLE DB DBSCHEMA_FOREIGN_KEYS rowset returned the following indicated integer values for the UPDATE_RULE or DELETE_RULE referential actions. CASCADE 0 if referential action is NULL 1 SET NULL 2 SET DEFAULT and RESTRICT 3 These values, derived from the ODBC SQLForeignKeys result set, did not match the following OLEDB constants defined for these referential actions. DBUPDELRULE_NOACTION = 0x0 DBUPDELRULE_CASCADE = 0x1 DBUPDELRULE_SETNULL = 0x2 DBUPDELRULE_SETDEFAULT = 0x3 Furthermore, the DBSCHEMA_FOREIGN_KEYS rowset should have returned strings rather than integers for the UPDATE_RULE or DELETE_RULE referential actions. The OLE DB specification states: If a rule was specified, the UPDATE_RULE or DELETE_RULE value is one of the following: "CASCADE" — A <referential action> of CASCADE was specified. "SET NULL" — A <referential action> of SET NULL was specified. "SET DEFAULT" — A <referential action> of SET DEFAULT was specified. "NO ACTION" — A <referential action> of NO ACTION was specified. Providers should return NULL only if they cannot determine the UPDATE_RULE or DELETE_RULE. In most cases, this implies a default of NO ACTION. Also, the fix for Engineering case 620136 did not handle the situation when there was no declared Primary Key in the primary table but there were table or column (not nullable) Unique Constraints that permitted the addition of foreign keys. These problems have been fixed. The Upgrade utility should be used to update the OLE DB schema rowset support in any database used with ADO, ADOX or OLE DB. ================(Build #3266 - Engineering Case #651383)================ As of the changes for Engineering case 633120, a SQL query producing multiple result sets was not handled correctly by the SQL Anywhere OLE DB provider. This problem has now been corrected. The cursor is no longer closed after the first result set is processed.

SQL Anywhere - Other

================(Build #3298 - Engineering Case #661242)================ A silent install of SQL Anywhere Monitor in which the location of the database (DIR_SQLANY_MONITOR) was not specified, would have caused the database to be installed to %SystemDrive%\CommonDocFolder. This has been fixed so that the correct default location is now used (%ALLUSERSPROFILE%\Documents\SQL Anywhere Monitor 12). ================(Build #3298 - Engineering Case #661188)================ The 64-bit UltraLite ODBC driver (Bin64\ulodbc12.dll) was not being correctly registered. This would have resulted in the failure of Interactive SQL and/or Sybase Central to load an UltraLite database. The has been fixed. Alternatively, the driver can be registered manually using the following command: regsvr32.exe %SQLANY12%\Bin64\ulodbc12.dll ================(Build #3295 - Engineering Case #660190)================ The folder names under %SQLANYSAMP12%\UltraLiteJ\Android\CustDB used mixed case and in some cases were incorrect in the GA release of 12.0.1. This caused Eclipse to fail when building the sample. This has been fixed such that future remastered releases will use the correct case. However, EBF installs will not fix these incorrect folder names. A workaround is as follows: Before attempting to build the sample in Eclipse, ensure that the sub-directory names are as show below. Note that all names are lower case and that hyphens (-) should be used, not underscores (_), where applicable. libs res src libs\armeabi res\drawable-hdpi res\drawable-ldpi res\drawable-mdpi res\layout res\menu res\values src\com src\com\sybase src\com\sybase\custdb ================(Build #3281 - Engineering Case #659357)================ Running the Deployment wizard when SQL Anywhere had been installed to directory with a path containing multi-byte characters would have caused the generation of the MSI to fail with an error like: "C:\Sy签署\SQL Anywhere 12\bin32\dblib12.dll (Not Found)". This has been fixed.

SQL Anywhere - Server

================(Build #3298 - Engineering Case #661034)================ Under rare conditions, the server could have hung while executing a query with multiple GROUP BY clauses. This may have occurred when the workload executing on the server suddenly changed (i.e. if many requests arrived almost simultaneously). This has been fixed. A workaround is to disable intra-query parallelism for the affected query (SET TEMPORARY OPTION MAX_QUERY_TASKS=1). ================(Build #3297 - Engineering Case #661036)================ Activity executing on the utility_db could have caused a crash, memory corruption, or other unpredictable behaviour, if the cache were to shrink at the same time. This problem has been fixed. ================(Build #3297 - Engineering Case #660629)================ When connected to an ASE 15.5 server and attempting to make a remote request to SQL Anywhere, there was a chance the request would have failed with an "unkown token 35" error. This problem has now been fixed. Note that this problem only affected remote requests from ASE to SQL Anywhere. The problem did not affect making remote requests from SQL Anywhere to ASE via Remote Data Access. ================(Build #3297 - Engineering Case #660446)================ Performing a backup with a TRANSACTION LOG RENAME would have caused read-only connections to the database on the mirror server to be dropped. This has been fixed. ================(Build #3297 - Engineering Case #658330)================ Execution of an INSERT ON EXISTING UPDATE statement, with CASCADE as the foreign key update option, would have resulted in a foreign key constraint violation error when updating values which were logically the same, but had different physical representation. For example, in case insensitive database changing 'EMPLOYEE' to 'employee'. This has been fixed. ================(Build #3296 - Engineering Case #660432)================ Creating a variable with an initial value specified as a host variable did not give a syntax error in some cases. This has been fixed. ================(Build #3296 - Engineering Case #660248)================ If an application connected via jConnect or Open Client and made an external environment call that returned a result set, then the server may have crashed. This problem has now been fixed. ================(Build #3296 - Engineering Case #659870)================ Empty string values indexed by an IMMEDIATE text index were not counted towards the total number of documents indexed, unless more than one column was indexed and the value in at least one of the columns was neither an empty string nor NULL. This problem caused scores for full text queries to be lower then they should have been if all the documents were correctly counted. Additionally, a memory leak could have occurred in this situation. This has been fixed. Note, if a text index was created or updated using a server with this problem, it may be necessary to rebuild the index with an updated server if problems are encountered with the index. ================(Build #3295 - Engineering Case #660235)================ On Windows Vista and later operating systems, whenever a new server executable had to be launched in order to autostart a database, launching the executable may have failed when a relative path to the server executable was specified. For example, dbspawn mybin\dbsrv12.exe -n myserver my.db, or using "...;start=mybin\dbsrv12.exe..." in a connection string, could have fail to launch the server executable. This problem has been fixed. ================(Build #3295 - Engineering Case #660211)================ In rare circumstances, calling the system procedures sa_locks, sa_describe_shapefile, st_geometry_dump, sa_list_cursors, or sa_mirror_server_status, could have caused the server to crash, or could have caused unpredictable behaviour. The problem was more likely to have occurred when small cache sizes were used. This problem has been fixed. ================(Build #3295 - Engineering Case #660194)================ Execution of a query on a Directory Access proxy table with a WHERE clause that contained a predicate of the form "file_name = variable", may have sometimes run very slowly while running very quickly most other times. This problem has now been fixed such that the query performance is now consistently fast from one run to the next. ================(Build #3295 - Engineering Case #660057)================ If a foreign key was created with both MATCH and CHECK ON COMMIT clauses, and the database subsequently required recovery, recovery would have failed when replaying the statement from the transaction log. This has been fixed. ================(Build #3295 - Engineering Case #652949)================ The trigger operation condition 'UPDATE( {column-name} )' did not return TRUE if the column value had been changed by a previously running BEFORE UPDATE row-level trigger only. This has been fixed. ================(Build #3295 - Engineering Case #652244)================ An internal unload/reload (i.e. dbunload -ii) that encountered a SQL error could have hung or caused a subsequent unload/reload on the same server to hang. This problem has been fixed. ================(Build #3294 - Engineering Case #659804)================ If a proxy table or proxy procedure was defined with variables in the AT clause, then the AT clause would have been incorrectly truncated if the length of the AT clause after variable expansion was greater than the length of the original AT clause. This problem has now been fixed. ================(Build #3294 - Engineering Case #659639)================ When making a Java external environment call, if the stored procedure had an argument of type char (note that this is a single char value rather than a java.lang.String), and a NULL value was passed in for the char argument, then the server would have failed the request with a Java NullPointerException. It should be noted that the Java VM would have continued to run in this situation and the connection was still able to make subsequent Java external environment calls. This problem has now been fixed such that passing a NULL char value to a Java external environment call will result in a char with zero value being passed down to the Java method. Again, it should be noted that this problem does not affect passing NULL string values to java stored procedures. ================(Build #3294 - Engineering Case #659631)================ If an application enlisted a connection within a DTC transaction and then subsequently attempted to perform a DTC commit on the transaction after explicitly unenlisting it first, then the application would have hung until the server was shut down. This problem has now been fixed and the commit request will now immediately fail as expected. ================(Build #3294 - Engineering Case #659370)================ Inlining of simple functions could have generated unexpected errors or incorrect results. For incorrect results to have occurred, the caller of the function had to have variables defined with the same names as the inlined function. This has been fixed. ================(Build #3294 - Engineering Case #613299)================ Queries involving indexes could return incorrect results, and using tools such as the Validate Database Wizard in Sybase Central, or the Validation utility, could have reported index corruption when there was in fact none. For this to have occurred, the index must not have been unique and there must be many consecutive rows with the same indexed value. This has been fixed. ================(Build #3292 - Engineering Case #658985)================ Unexpected deadlocks could have occurred when using the UPDLOCK hint at isolation level 3. For example, if two transactions issued the statements SELECT t.c FROM t WITH (UPDLOCK) WHERE t.pk = 1 UPDATE t SET c = 2 WHERE t.pk = 1 concurrently at isolation level 3, a deadlock would have occurred if both connections managed to issue the SELECT before either issued the UPDATE. This has been fixed. ================(Build #3292 - Engineering Case #658849)================ If an application on a Unix system attempted to make a TCP/IP connection to a server that was not running, the connection attempt may have failed with error code -832 "Found server but communication error occurred". This has been fixed, the correct error code should be -100 "Database server not found". ================(Build #3291 - Engineering Case #657823)================ The fix for Engineering case 620136 did not handle the situation where there was no declared Primary Key in the primary table but there were table, or column, (not nullable) Unique Constraints that permit the addition of foreign keys. This problem has been corrected. ================(Build #3290 - Engineering Case #658114)================ The server would have crashed if a SELECT statement useed the FOR XML EXPLICIT clause, and a null value was used for the CDATA directive. This has been fixed ================(Build #3290 - Engineering Case #656998)================ Remote queries with many aliases in grouped derived tables may have taken a long time to execute. This has been fixed. ================(Build #3289 - Engineering Case #657621)================ If a server (S2) acting as mirror saw a dropped connection to the primary server (S1) after a temporary network outage, it could have attempted to become primary while S1 was still running. S2 would then have failed during startup because S1 still owned the alternate server name for the database. This error would also have caused S2 to shut down. If S1 needed to restart, it would have been unable to take ownership of the database because S2 was unavailable and the arbiter's state had been updated to indicate that S2 was the owner. Also, when a server acting as primary (S1) accepted an inbound connection from the mirror (S2), S1 attempted to make an asynchronous outbound connection to S2 if one did not already exist. If this connection attempt failed, S2 would have failed to receive updates from S1. These problems have now been fixed. ================(Build #3288 - Engineering Case #658302)================ If many contiguous index entries were removed from an index with no intervening inserts, concurrent snapshot transactions could have seen incorrect results, and in rare circumstances, foreign rows could have been added without matching primary rows. This has been fixed. ================(Build #3287 - Engineering Case #658189)================ If a copy node (S3) was starting just as its intermediate node parent (S2) was receiving pages from the root (S1), S3 could have failed to receive some of the pages and would have reported a corrupt transaction log file. This has been fixed. ================(Build #3287 - Engineering Case #658130)================ SQL Anywhere web client procedures were not able to proxy https requests. This has been fixed. The following example routes an https request destined for 'securehost' (default port 443) through a proxy host named 'squid' listening on port 8080: create or replace procedure test() URL 'https://securehost/service' TYPE 'HTTP:GET' PROXY 'http://squid:8080'; ================(Build #3287 - Engineering Case #658121)================ On some Windows machines, attempting to make a TCP connection to a Personal Server on the same machine may have failed. This has been fixed. ================(Build #3287 - Engineering Case #657987)================ The server could have crashed, or failed assertion 200114, when processing a LIKE predicate. This has been fixed. ================(Build #3287 - Engineering Case #657812)================ A number of read-only scale-out issues have been fixed. 1) The server could have crashed or otherwise failed in rare cases when one or more read-only scale-out children were added to a node. This could have occurred if one node was stopped or restarted. 2) If a parent node was restarted and had a lower log offset than it's child, the child could have shutdown with the message "Database server shutdown due to incompatible files for database mirroring." Restarting the child node after the parent caught up to primary would succeed. Now the child node no longer stops and the child node will start applying log changes once its parent gets to a higher log offset. 3) If a parent copy node was started with child nodes already running, a child node and possibly other nodes could have hung. 4) If a copy node was connected to it's alternate parent, and then it's alternate parent stopped, the copy node may have stopped applying updates. The copy should have connected to the primary server to receive updates but was actually not receiving updates. Note that sa_mirror_server_status may show that the node which is not receiving updates is connected, when in fact it was not. Now the copy node will connect to the primary server if neither the parent nor alternate parent servers are available. 5) An ALTER MIRROR SERVER statement that only changed the alternate parent was ignored until the server being altered was restarted. For example, if ServerC had parent ServerB: ALTER MIRROR SERVER 'ServerC' AS COPY FROM SERVER 'ServerB' OR SERVER 'ServerA' was ignored by ServerC until it was restarted. Now the alternate parent is effective on the server being altered once it has applied the log offset with the ALTER MIRROR SERVER statement. 6) Attempting to SET MIRROR OPTION auto_add_server to the alternate server name for the primary server incorrectly resulted in an error. 7) If read-only scale-out copy nodes had a primary server as their root node, and the primary server failed over to the mirror server, then all client connections to all copy nodes were incorrectly dropped. ================(Build #3285 - Engineering Case #657520)================ In very rare cases, the server asserts with assertion error 102300 "File associated with given page id is invalid or not open" if request level debugging is turned on and includes plan logging and there are schema changes around. This has been fixed. To work around the problem plan caching can be turned off (option Max_plans_cached = 0) or plan logging can be turned off (switch -zr without "plan" and "all"). ================(Build #3285 - Engineering Case #654801)================ The SQL Anywhere Optimizer may have incorrectly pruned, without costing, optimal plans during query optimization. This has been fixed. This incorrect pruning would most probably have affected the final execution plans for complex, but inexpensive (i.e., the optimal plan has a small runtime) queries. ================(Build #3284 - Engineering Case #657586)================ If a call was made to the Java external environment, and the stored procedure had an argument of type tinyint and a NULL value was passed in for the tinyint argument, then the server would have failed the request with a NullPointerException. It should be noted that the Java VM would continue to run in this situation and the connection was still able to make subsequent Java external environment calls. This problem has now been fixed such that passing a NULL tinyint value to a Java external environment call will result in a byte with zero value being passed down to the Java method. ================(Build #3284 - Engineering Case #656691)================ If a query was rewritten by the optimizer to use a materialized view, the query would incorrectly have returned zero rows if a spatial predicate was applied to the rows originating from the view. This has been fixed. ================(Build #3283 - Engineering Case #656828)================ Adding the CHECK IMMEDIATE REFRESH clause to a CREATE MATERIALIZE VIEW statement would have caused the server to crash. This has been fixed. ================(Build #3283 - Engineering Case #656264)================ When connected to a database that had the same character set as the OS, and a query like the following was executed: SELECT ... FROM dirtab WHERE file_name = '...' where dirtab was a directory access table and the file_name string literal contained non-ASCII characters, there was a chance the server would have crashed. This problem has now been fixed. ================(Build #3282 - Engineering Case #656847)================ If a derived table was joined with the rest of the query using a Join Nested Loops operator, the performance of the query may have suffered when the derived table had to be computed many times due to many rows generated by the left hand side of the Join Nested Loops. The optimizer was choosing such a plan if the estimated number of rows of the left hand side was very small. If this estimation was wrong (e.g., the optimizer estimates one row for the left hand side but in reality the left hand side produces 1,000 rows), the derived table was computed many, many times during execution. This has been fixed so that the optimizer considers only Join Hash or Join Sort Merge operators for the derived tables if it is correct to do so. ================(Build #3282 - Engineering Case #656839)================ If an INSERT or UPDATE statement affecting the value of a spatial column was canceled, or a run-time error was encountered during execution, there was a possibility that the server would have failed assertion 112701: "Failed to convert geometry to EWKB for the redo log -- transaction rolled back [-301] ['40W01']". This has been fixed. ================(Build #3281 - Engineering Case #656650)================ The system procedure sa_db_list() did not validate its database id parameter if the value was a positive integer. This would have resulted in a single row result set containing the value provided. Now, if the value is not a valid database id, the procedure will return an empty result set. ================(Build #3281 - Engineering Case #655981)================ Values for the ApproximateCPUTime property is never expected to decrease between calls, as it represents an estimate of accumulated CPU time for a connection. However, for connections that had accumulated approximately 1000 seconds of CPU time, the counter could have periodically receded by approximately 400 seconds. ================(Build #3279 - Engineering Case #656272)================ The INSERT ON EXISTING SKIP statement did not report the correct number of inserted and updated rows using @@rowcount and sqlcount. This has now been corrected. ================(Build #3279 - Engineering Case #655749)================ Execution of an INSERT ... ON EXISTING SKIP statement did not report the correct number of inserted and updated rows using @@rowcount and sqlcount. This has been fixed ================(Build #3279 - Engineering Case #654294)================ When canceling a query involving spatial operations, there was a small probability the server could have crashed, or failed to release resources. This has been fixed. ================(Build #3278 - Engineering Case #655972)================ The fix for Engineering case 636018 missed a case, which has now been corrected. Description of case 636018: Queries involving indexes containing long values could have returned incorrect results. Index corruption was possible, but not likely.. ================(Build #3278 - Engineering Case #654938)================ In rare cases, a corrupt TCP packet could have caused the server to crash. The server now validates the packet header before do anything with the packet. If it is corrupt, the packet is dropped. ================(Build #3277 - Engineering Case #655533)================ Under rare circumstances, inserting the result from the Round Earth linestring() function, or using the linestring() function in a query, could have crashed the server, if the line string crossed the equator. This has been fixed. ================(Build #3275 - Engineering Case #654790)================ In very rare cases, the server may have crashed with a floating point exception when slightly loaded. This has been fixed. ================(Build #3273 - Engineering Case #654284)================ The server could have crashed if the STOP SERVER or STOP ENGINE statement was called from an event or HTTP connection. This has been fixed. Note that the 'STOP SERVER' syntax is new to version 12 (older servers support 'STOP ENGINE'). ================(Build #3273 - Engineering Case #654259)================ The changes for Engineering case 650489 may have caused execution remote procedure calls to an ASE remote server to fail with a strange "unchained transaction mode" error. This problem has now been fixed. ================(Build #3272 - Engineering Case #653591)================ Attempting to attach tracing to an older version database file could have caused the server to crash. This has been fixed so that attempting to attach tracing to an older version file now returns the error "ATTACH TRACING could not connect to the tracing database" (-1097). ================(Build #3272 - Engineering Case #556778)================ The return values of the built-in functions user_id() and suser_id() may have incorrectly been described as not nullable even if the function argument was not nullable. This may have lead to the assertion error 106901 "Expression value unexpectedly NULL in write". This has been fixed so that the functions' results are always described as nullable. ================(Build #3270 - Engineering Case #653245)================ The value for the column "columns" for the system view SYS.SYSFOREIGNKEYS is generated using a LIST() function, but the function did not include an ORDER BY and so the result returned could have varied. This has been fixed by adding an ORDER BY clause. Note, the system view must be recreated by upgrading or rebuilding the database for the new view definition to be used. ================(Build #3270 - Engineering Case #652911)================ If an INSTALL JAVA UPDATE statement was executed to update an existing java class, the server would have incorrectly added a new system object id rather than reuse the already assigned object id. This problem has now been fixed. ================(Build #3269 - Engineering Case #653590)================ Diagnostic tracing, or application profiling to LOCAL DATABASE could not be used when the server was started with the command line option -sb 0 (disable broadcast listener). This has been corrected. A workaround is to manually supply a connection string (ATTACH TRACING TO <connstr>) with the DoBroadcast=NO option, rather than using the LOCAL DATABASE clause. ================(Build #3269 - Engineering Case #653588)================ If tracing was suddenly detached (because, for example, the server receiving the tracing data was shut down) at the same time as a deadlock occurred, a deadlock victim may have failed to write a ROLLBACK to the transaction log. This may have lead to an incorrect partial commit of a deadlocked transaction. This has been fixed. This problem is expected to be very rare. ================(Build #3269 - Engineering Case #635956)================ A query with a CUBE, ROLLUP, or GROUPING SETS clause and HAVING predicates may have returned an incorrect result set. The query must not have had any aggregate functions, and the grouping sets must have contained the grand total which should have been filtered by the HAVING predicates, but instead it was returned as a valid row. For example: select n_comment from nation group by cube (n_comment) HAVING n_comment like 'alw%'; The result set would have contained all the rows with n_comment for which the predicate "n_comment LIKE 'alw%' is TRUE, but also the row "(NULL)". This has now been fixed. ================(Build #3268 - Engineering Case #652592)================ Attempting to connect to a read-only scale-out database with a non-ASCII database name using the NODETYPE connection parameter could have incorrectly failed with a "Specified database not found" error. The database name was being sent back in either OS-charset or DB-charset, but the client needed it to be in client-charset. This has now been fixed. ================(Build #3267 - Engineering Case #652791)================ If a statement for a directory access table failed with the error SQLSTATE_OMNI_REMOTE_ERROR, and this statement was the last statement of the transaction then all subsequent remote server statements of this connection would have failed with the same error. This has been fixed. ================(Build #3267 - Engineering Case #652759)================ If a table was included in a MobiLink publication and one or more options were defined for that publication, but there were no synchronization subscriptions defined, the table could not be ALTERed to, for example, add a new column. This has been fixed. ================(Build #3267 - Engineering Case #652756)================ When validating a table that contained spatial data on 32-bit x86 systems where the processor did not support the SSE2 instruction set (the minimum required for SA spatial features), the database server would have reported a non-fatal assertion error 113300 or 113302 "failed to build cursor to validate". This problem has been fixed and the underlying error is now reported: SQL error (-1515) -- Support for spatial is not available for this CPU. ================(Build #3267 - Engineering Case #651294)================ When starting a 32-bit server with a large initial number of request tasks (-gn option), the server could have failed to start by reporting an error, crashing or quietly exiting. This problem has been fixed by reducing the maximum cache size to accommodate the address space needed for the stacks of the request tasks. ================(Build #3266 - Engineering Case #652587)================ When running a database without a transaction log, performance could have been significantly slower than in previous versions. This problem has been corrected. See Engineering case 608904 for a similar issue.. ================(Build #3266 - Engineering Case #652543)================ The server may have crashed during inserts into a view, if the view column was not a base table column. This has been fixed. Now the correct error SQLSTATE_NON_UPDATEABLE_VIEW is returned. ================(Build #3265 - Engineering Case #651694)================ If the connections between servers in a mirroring system used encryption, the primary server could have hung when performing an operation which required exclusive access to the database (e.g. a checkpoint) if other update activity was also occurring. This has been fixed. ================(Build #3264 - Engineering Case #652107)================ If a foreign key had both ON UPDATE and ON DELETE actions, renaming a column referenced by the foreign key could have caused one of the system triggers to be deleted and the other to be left unchanged. A trigger for an ON UPDATE action could have been converted to an ON DELETE action. This has been fixed. ================(Build #3264 - Engineering Case #651846)================ On Windows systems, the performance monitor might not have displayed counter values provided by the server. Typically this would have happened when a shared memory client that was attached to the server terminated abnormally. Counter values should not display for subsequent servers until all processes holding handles to the dead server (e.g. shared memory clients) are terminated. This has been fixed. ================(Build #3263 - Engineering Case #651658)================ On Windows systems, SQL Anywhere provides a version 1 (registry) performance provider. Windows should generate WMI classes automatically after the counter dll is registered, but these classes were generated only after instances of these objects (i.e. server, database and connection) existed in a process running in session 0 (i.e. as a service in Vista and up). This has been fixed. ================(Build #3262 - Engineering Case #651323)================ When the distance between two ST_Points exceeded the spatial reference system's tolerance by at least a factor of 1, but less than a factor of sqrt(2), the spatial relations ST_Equals and ST_Intersects could have incorrectly returned TRUE. This has been fixed. ================(Build #3262 - Engineering Case #651169)================ If a database containing a table with a uniqueidentifier column was unloaded using the Unload utility (dbunload) with one of the external unload options (-xi or -xx), and the resulting reload.sql script was executed using the Interactive SQL utility, a conversion error would have been reported. This has been fixed. A workaround is to avoid using -xx or -xi when rebuilding the database. ================(Build #3262 - Engineering Case #650337)================ Queries with an outer join having the same base table as the preserved and null-supplying sides could have returned incorrect result sets. Conditions where this could happen: 1. the outer join is of the form : T as T1 LEFT OUTER JOIN T as T2 ON(p) 2. the ON predicate p has only equijoins, and at least two equijoins 3. p is of the form : T1.c1 = T2.c1 and T1.c3 = T2.c2 4. there exists an unique index on T < c1,c2> This has been fixed. ================(Build #3261 - Engineering Case #650740)================ Execution of a DROP DATABASE statement would have failed if the automatically generated database alias name was an invalid identifier. This has been fixed. ================(Build #3261 - Engineering Case #650690)================ The server would have returned assertion failed 100905 "Articles on the table use do not match those on the table definition", if a table had publications and a simple INSERT with multiple row value constructors was executed. For example: insert into tab1 values (1,'a'),(2,'b'). This has been fixed. ================(Build #3153 - Engineering Case #647077)================ When run on Mac OS X systems, the server would have exited with the error "Failed to become daemon" if both the -um and -ud command line options were specified. This was due to a limitation in the OS X GUI infrastructure. This has been fixed. The -um flag is now ignored if -ud is specified. A workaround is to use dbspawn instead of -ud.

SQL Anywhere - Sybase Central Plug-in

================(Build #3297 - Engineering Case #660656)================ After updating an external environment object via File->Update..., the object's Contents tab would not always have reflected the changes made to the object. This has been fixed. ================(Build #3292 - Engineering Case #659177)================ If a non-initialized materialized view or text index was selected in the tree and the Data tab was selected in the right-pane, then attempting to switch from one mode (Design, Debug or Application Profiling) to another would have caused a refresh of the materialized view or text index to be prompted for twice. This has been corrected so that there is now only one prompt. ================(Build #3279 - Engineering Case #656454)================ When connected to a database that contained one or more publications, and the property sheet for a Publication was opened and an Article was selected in the "Subscribe by restriction" tab, the Editor pane at the bottom of the tab would have been disabled except when the 'expression' radio button was checked. When the Editor pane was disabled it was still possible to right click on it to reveal a pop-up menu that allowed for search and replace in the box. The menu is now disabled when the Edit pane is disabled. ================(Build #3278 - Engineering Case #655945)================ On the database Fragmentation tab, the shortcuts for Zoom In (Ctrl++) and Zoom Out (Ctrl+-) did not work with the numeric keypad. This has been fixed. ================(Build #3278 - Engineering Case #644464)================ If a database had two or more 'post_login_procedure' option settings, then attempting to connect to the database would have failed with a "Subquery cannot return more than one row" error. This has been fixed. ================(Build #3273 - Engineering Case #654249)================ The External Environments folder was erroneously including an entry for dbmlsync. This has been fixed. ================(Build #3266 - Engineering Case #652547)================ Altering the schedule for an event to remove a days-of-month specification did not set SYSSCHEDULE.days_of_month to null. This has been fixed. ================(Build #3264 - Engineering Case #651520)================ Displaying the results of an Index Consultant run of a large workload could have required an excessive amount of memory, causing Sybase Central to crash if there was not enough physical memory available. This has been fixed. ================(Build #3262 - Engineering Case #651723)================ Opening a column's Property sheet would have caused the error: "Support for spatial is not available for this CPU", when the server was run on a system with on a Pentium III processor. The same error would also have occurred in the Function and Domain wizards, and the Spatial Reference Systems folder if it was selected in the tree. These issues have been fixed.

SQL Anywhere - Utilities

================(Build #3295 - Engineering Case #660005)================ If a file was opened in the Interactive SQL utility and then the window was closed, the file would still have been locked by the dbisql process if the "Enable fast launcher" option was on. This has been fixed. ================(Build #3292 - Engineering Case #659337)================ SQL changes in the Plan Viewer and Spatial Viewer windows were ignored if the Editor component had been selected, "Options" was clicked and then dismissed by clicking "OK". This has been fixed. This issue had at least one other symptom: If a file was opened, "Options" for the editor was selected, either by right-clicking as described above or by opening the Options window, then clicked "OK", subsequent changes in the Editor would not have caused the Interactive SQL utility's window title text to include an asterisk. The asterisk indicates that there are unsaved changes in the editor. ================(Build #3292 - Engineering Case #659140)================ The text completer may not have suggested any matches if there was an empty single quoted string earlier in the statement, or in a previous statement. This has been fixed. ================(Build #3289 - Engineering Case #658334)================ If a database option value contained a single quote, the reload script generated by the Unload utility would have resulted in a syntax error when the database was reloaded. This has been fixed. ================(Build #3286 - Engineering Case #653316)================ When deleting rows from an UltraLite database, the Interactive SQL utility would have incorrectly reported the number of rows affected by a DELETE. The message "1 row(s) deleted" would have been shown in the Message pane, regardless of how many rows were deleted. This has been fixed. ================(Build #3285 - Engineering Case #657324)================ Installations created by the Deployment wizard were to be missing the following files from the assembly\v2\ directory: iAnywhere.Mobilink.Client.dll iAnywhere.QAnywhere.Client.dll iAnywhere.QAnywhere.Resources.dll iAnywhere.QAnywhere.ws.dll These files were being installed in the Global Assembly Cache (GAC), but an additional copy was not also put in the assembly\v2 directory. This has been corrected so that these files are now installed in both locations. ================(Build #3281 - Engineering Case #658169)================ When using the Service utility (dbsvc) for Linux to create an automatic service (when the machine boots) on Linux SUSE 11 for the SQL Anywhere server, the server may have started before the network service had been started. As a result, some applications running inside the SQL Anywhere server may have failed to work properly. This issue would have affected SQL Anywhere Server Monitor deployments. This has been fixed. ================(Build #3281 - Engineering Case #656897)================ Attempting to execute a SQL statement that was made up only of full-width space characters (U+3000, the "Ideographic Space") would have caused the Interactive SQL utility to crash. This has been fixed. ================(Build #3278 - Engineering Case #637456)================ Attempting to import NCHAR types from ASE using the INPUT statement or the Import Wizard, would have failed with the message "Cannot convert '' to a varbit". This has been fixed. ================(Build #3278 - Engineering Case #631019)================ Two issues relating to using the INPUT and OUTPUT statements (and their corresponding wizards) to move data between SQL Anywhere and ASE have been fixed. Importing a table from ASE which had TIMESTAMP columns into a new table would have failed. The ASE TIMESTAMP type was being misinterpreted as being equivalent to the SQL Anywhere TIMESTAMP type, which is false. Exporting data from SQL Anywhere into ASE would have reported various conversion issues for SQL Anywhere DECIMAL values. ================(Build #3277 - Engineering Case #655607)================ The text in the Favorites sidebar could have disappeared if the mouse was moved over it. This has been fixed. ================(Build #3275 - Engineering Case #654981)================ The Console utility could have stopped refreshing connection properties after changing the set of properties which were displayed, even after restarting DBConsole. This has been fixed. ================(Build #3274 - Engineering Case #654636)================ Opening a .saplan file in the "Plan Viewer" window and clicking the "Print" button did not do anything. This has been corrected so that it prints the plan. There was no problem printing plans which were generated by clicking the "Get Plan" button. ================(Build #3274 - Engineering Case #654635)================ If HTMLHelp documentation for SQL Anywhere was installed, it was possible for the Index Consultant to open DCX help under some circumstances. This has been fixed. ================(Build #3274 - Engineering Case #654425)================ In the Options window, the components for editing the quitting time were enabled even if the "Quitting time" checkbox was not checked. Now, the components are disabled when the checkbox is not checked. ================(Build #3274 - Engineering Case #654253)================ In versions of the Interactive SQL utility 10.0.0 and later, using an ISQL parameter for the value of an option in a SET OPTION statement did not work because the parameter was not substituted correctly. This has been fixed. ================(Build #3270 - Engineering Case #653743)================ The Import wizard would have reported an internal error when importing a shapefile if no spatial reference system was selected. This has been fixed.

SQL Remote for Adaptive Server Anywhere - SQL Remote Message Agent

================(Build #3297 - Engineering Case #660813)================ If the database was blank padded and the database option Compression was set to be -1, .SQL Remote would have logged the following warning message in its output file: Option DBA.Compression contains invalid value -1 The value -1 is a valid value, it was the blank padding that was causing the option to be treated as invalid. This problem has been fixed. ================(Build #3278 - Engineering Case #656093)================ The Log Translation utility (dbtran) and SQL Remote could left temporary files undeleted after execution. This has been fixed. ================(Build #3277 - Engineering Case #655351)================ Temporary files created by SQL Remote and Log Translation utility may not have been deleted. This problem has been fixed.

UltraLite - Runtime Libraries

================(Build #3295 - Engineering Case #660263)================ Incorrect results were possible for a deeply nested (at least a depth of three) aggregate subquery. This has been corrected. ================(Build #3295 - Engineering Case #659922)================ A syntax error could have been incorrectly generated for an outer reference occurring in a subquery containing another nested subquery, where the outer reference was to the right of the nested subquery. This has been corrected. ================(Build #3292 - Engineering Case #659615)================ Some internal optimization algorithms have been generalized and improved. This may change plans for queries. ================(Build #3290 - Engineering Case #658549)================ Result set rows could have been presented in an incorrect order when all of the following conditions were present for a SQL query: - An index existed in which the first column (say col1) was specified to be in descending order - The query contained a search condition of the form "col1 LIKE expression" where the expression started with non-wildcard characters. - The query contained an ORDER BY starting with col1 This has been corrected. ================(Build #3275 - Engineering Case #654684)================ References to derived table columns may have been incorrect when temporary tables were present and the derived table was used to load the temporary table. This has been corrected. ================(Build #3275 - Engineering Case #654648)================ The substr() function was permitting LONG VARCHAR values to be used as the first argument to the function. This has been corrected ================(Build #3272 - Engineering Case #653884)================ The Mobilink Server would have logged the error "Light weight poll request failed" after every poll attempt from an Ultralite client (through the use of the ML_GET_SERVER_NOTIFICATION function), even if the polls were actually successful. This has been fixed

UltraLite - UL Java Provider for Sybase Central

================(Build #3298 - Engineering Case #661008)================ Right-clicking on an UltraLite database in the UltraLite Sybase Central plug-in, will show a list of database properties, one of which is the database file name. If the file name contained multi-byte characters, they could have been displayed as mangled characters. This has now been fixed. ================(Build #3294 - Engineering Case #659866)================ If an invalid value was specified for the "(other)" parameter on the Synchronization Profile property sheet, then it was not possible to clear this invalid value unless the property sheet was closed and F5 was pressed. This has now been fixed. ================(Build #3279 - Engineering Case #656087)================ When connecting from Sybase Central to an UltraLite database with multi-byte characters in its file name, the database name would have appeared with mangled characters. This has been fixed. ================(Build #3265 - Engineering Case #652188)================ When a table was selected in the tree and the Indexes tab was shown in the right pane, there was no File -> New -> Index... menu item. As such, it was only possible to start the Index wizard from the toolbar button. This has been fixed.

UltraLite - UltraLite for M-Business Anywhere

================(Build #3281 - Engineering Case #656844)================ ULPod may have caused AvantGo clients to crash when calling the method TableAGDBSet getTableAGDBSet. This has been fixed.

UltraLite - UltraLite.NET

================(Build #3275 - Engineering Case #653158)================ The methods ULConnection.CountUploadRows, ULConnection.GetLastDownloadTime, and ULConnection.ResetLastDownloadTime would have failed on Windows desktop when provided named publications instead of ULConnection.SYNC_ALL_DB. This has been fixed.

UltraLite - Utilities

================(Build #3274 - Engineering Case #653467)================ If an UltraLite database had a table with a LONG VARCHAR column, and that column contained XML data, attempting to view that data in the Interactive SQL utility's cell editor (in the XML Outline tab) could have failed with the error: "An invalid XML character (Unicode: 0x0) was found in the element content of the document". This is now fixed.

UltraLiteJ - Runtime

================(Build #3297 - Engineering Case #660797)================ During a large (at least 15 MB) data synchronization, the UltraLiteJ native library for Android could have caused a Dalvik VM memory overflow condition similar to the following: WARN/dalvikvm(641): ReferenceTable overflow (max=512) ... ERROR/dalvikvm(641): Failed adding to JNI local ref table (has 512 entries) ... ERROR/dalvikvm(641): VM aborting The memory overflow condition would have occurred during a Connection.synchronize( SyncParms parms ) call, where a SyncObserver was defined in the SyncParms. This has been fixed. ================(Build #3297 - Engineering Case #660501)================ Incorrect results were possible when executing a query with an IN list consisting of a single host variable. This has been corrected. The work-around is to rewrite expression in ( ? ) as expression = ?. ================(Build #3295 - Engineering Case #660387)================ Incorrect results were possible for a deeply nested (at least a depth of three) aggregate subquery. This has been corrected. ================(Build #3290 - Engineering Case #658845)================ Result set rows could have been presented in an incorrect order when all of the following conditions were present for a SQL query: - An index existed in which the first column (say col1) was specified to be in descending order - The query contained a search condition of the form "col1 LIKE expression" where the expression started with non-wildcard characters. - The query contained an ORDER BY starting with col1 This has been corrected. ================(Build #3278 - Engineering Case #655880)================ Second and subsequent '%' characters were not being handled properly in LIKE clauses. This was corrected.