SAP SQL Anywhere的所有已知BUG列表(8)

随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
考虑到Sybase数据库的初学者或者没有购买原厂服务的Sybase客户情况,现提供SAP ASE/IQ/RS/SDK/SQL Anywhere/PB等产品的BUG信息。
在SAP Support Portal网站或者google上搜索Targeted CR List for ASE,可以看到针对不同版本的CR(CR表示Change Request)简单描述信息列表。
需要注意的是:Targeted CR List for ASE列出的CR虽然绝大多数是BUG,但有一些是更改需求。
以下提供SAP ASE/IQ/RS/SDK/SQL Anywhere/PB等产品的BUG信息!
不仅仅包括BUG的详细描述信息,还包括首次报告BUG的平台、数据库版本以及BUG修复历史过程;有些BUG还提供了Workaround来临时解决该BUG带来问题。

SQL Anywhere的所有已知BUG列表(1)
SQL Anywhere的所有已知BUG列表(2)
SQL Anywhere的所有已知BUG列表(3)
SQL Anywhere的所有已知BUG列表(4)
SQL Anywhere的所有已知BUG列表(5)
SQL Anywhere的所有已知BUG列表(6)
SQL Anywhere的所有已知BUG列表(7)
SQL Anywhere的所有已知BUG列表(8)
 

CR
Number
Description
740222 When describing a cloud server running on a Linux host, the TCP addresses listed may have include �::1�. This has been fixed.
740226 Using '*' when specifying the publication list would have caused the UltraLite runtime to crash during a synchronization. This has been fixed.
740328 The Relay Server would have incorrectly stopped relaying and reported the error RSE4008 with 揗alformed HTTP chunk� when it encountered chunked server responses with valid extensions or trailers (see RFC2616 section 3.6.1). This has been fixed. Logging of the extensions and trailers were added for log level 4 and higher.
740334 The ICommandPersist interface methodes, LoadCommand, DeleteCommand, and SaveCommand, did not qualify system tables references with an owner name. This has been corrected.
740400 In rare cases, a copy node or mirror server could have used more memory than expected. If this occurred, the extra memory would typically have been less than 1MB. This has been fixed.
740412 The 32-bit version of the Version 9 or earlier physical store library (dboftsp.dll) was not installed on a 64-bit OS when the 32-bit Client feature was selected. Furthermore, dboftsp.dll was not installed when the MobiLink or SQL Remote features were selected. This has been fixed.
740414 The SQL Anywhere Extension Agent library (dbsnmp*.dll) was not being installed on a 64-bit systems. The 64-bit install needs to put down the 32-bit dbsnmp*.dll to support Microsoft SNMP, which is a 32-bit only service. This has been fixed.
740440 The Relay Server would have responsed with "HTTP 200 OK" to requests that didn抰 carry User-Agent headers, without actually performing the relay. The Relay Server uses the User-Agent header (or alternatively the IAS-RS-User-Agent header) to group metrics for aggregated statistics. A fix has been made so that requests that don抰 carry User-Agent or IAS-RS-User-Agent headers are now processed, and their metrics are collected under the group with User-Agent 揰unknown_�. This problem was reported when using the Relay Server with Windows 8 Store app which accesses NetWeaver Gateway OData services via the Relay Server and SUP 2.2.
740441 If certain SMTP errors occured during xp_sendmail, the error code and text returned by xp_get_mail_error_code() and xp_get_mail_error_text() may have been 250 and �2.0.0 Reset state� respectively, regardless of what actual error occurred. This has been fixed to return the correct SMTP error details.
740486 Clients are not expected to use expired affinity, however not all client development can support proprietary expiry defined by the Relay Server. For that reason, the Outbound Enabler was relaxed to let in new requests with expired affinity. This relaxation was found to be incomplete. Under certain access sequence, a POST request may still suffer errors like the following:

RS16: RSE4015: Outbound enabler of backend server 'S0' in backend farm 'RSTEST02.F0' reports session error OEE_SESSION_ACCESS_FAILED(1051) with parameters 'RS_CLI_REQUEST_CONTINUE', 'disconnected at the middle of a request', '_unused_'

OE16: OEE1051: The Outbound Enabler was unable to access the session with ridx=0 sidx=0 snum=0000 sfp=01aa9daa on a RS_CLI_REQUEST_CONTINUE packet due to disconnected at the middle of a request

RS12: RSE4004: Outbound enabler of backend server 'S0' in backend farm 'MLVM-SARSX64.F0' reports session error OEE25100 with parameters '_unused_', '_unused_', '_unused_'

OE12: Session was disconnected at the middle of a packet sequence. Aborting sidx=0

The problematic sequence has been identified and a fix has been made so that the OE can handle the POST that falls into that sequence. If the traffic is RESTful, a user workaround is to turn off all affinity injection from the Relay Server using the active_cookie=no and active_header=no property in the backend_farm configuration section of the affected backend farm and clear HTTP cookies from the client after the Relay Server configuration has been updated.

740488 Attempting to create a table column or domain with an empty string as the default value would have caused the object to be created with no default value. This has been fixed.
740548 Information returned by the system procedure sa_mirror_server_status() was not updated for the hour after a daylight savings time change that changed the local time to be an hour earlier. The sa_mirror_server_status row corresponding to the server that was running the sa_mirror_server_status query was note affected. This has been fixed.
740559 The affinity information injected by the Relay Server carries information for addressing the socket opened from the Outbound Enabler to the backend server. This was required for end-to-end persistent connections between Client-RS and OE-Backend, while the shared RS-OE connection is always persistent. Such socket level affinity calls for affinity information isolation per socket on the client side. This proprietary isolation requirement was found to be too restrictive. Partners have been releasing their clients or utilizing third party client software in solutions using the Relay Server where the isolation requirement has not been met. Not all development environments or third party clients can support the implementation of the isolation. A change has now been made to introduce an optional relaxation from the Relay Server so that it will reduce the level of addressing information to backend server level instead of socket level. Persistent connection between Client-RS can still be maintained as the Relay Server will work with the Outbound Enabler to transform the OE-Backend accesses into non-persistent transient access. The net result is a liberation on developing integration between the client and the Relay Server.

A new backend_farm property called socket_level_affinity has been added for controlling the behavior in a per backend farm manner. The liberation described above is DISABLED by default (i.e. socket_level_affinity=yes is the default). Online configuration update of this property is supported.

External Requirements

Updating to this new Relay Server, with socket_level_affinity=no, doesn抰 require deploying a client to clear previous affinity cookie assigned by the Relay Server. Also, the Outbound Enabler doesn抰 need to be upgraded in order to enjoy the liberation. This is an internal behavior change which continues to require the backend servers to allow non-persistent HTTP traffic and/or broken up persistent HTTP traffic. This backend server requirement remains regardless of whether the liberation is used or not. If liberation is enabled, the backend server doesn抰 need to support or allow persistent HTTP connection.

740636 The MobiLink user password and new password could have been shown in MobiLink server log files in plain text. This would have occured if the password and new password, as named-parameters, were referenced in any user authentication scripts, and the MobiLink server was running with the 杤c command line option. This as been corrected. Now the MobiLink server will replace the password and new password with asterisks "*", and then log them.
740649 Under very rare conditions, the server may have entered an infinite loop while performing massive amounts of concurrent inserts. This has now been corrected.
740651 If the Unload utility (dbunload) was run on a database that had a user with an expired password, or if a new user had been created that was forced to change their password on first login, the resulting reload script would have contained an ALTER USER statement that would have failed with a syntax error. This problem has been fixed. The correct "ALTER USER <user-id> FORCE PASSWORD CHANGE ON" syntax is now correctly generated in the reload script.
740695 The ADO.NET provider could have thrown an exception when closing a pooled connection which used an integrated login. This has now been fixed.
740701 Calling the system stored procedure dbo.sp_objectpermission() would in some cases have returned the string 'NULL' in some of the result columns, instead of returning the NULL value. This problem has been fixed. Note that a database upgrade is required to get this fix.
740708 In SYSUSER, SYSEXTERNLOGIN and SYSLDAPSERVER system views, columns containing password hashes were visible to users without SELECT ANY TABLE privilege. This has been fixed.

Note that in order to apply this fix, existing version 16.0 database will need to be upgraded once the server containing the fix is deployed. New databases created with the fixed version of the server do not need to be upgraded.

740710 The MobiLink server now supports the 杁t command line option for Oracle only:

-dt detect transactions only within the current database (for Microsoft SQL Server, Adaptive Server Enterprise and Oracle only)

When this option is used on the command line with Oracle, the MobiLink server will fetch the earliest starting time of the open transactions only that have modified any tables to the current database schema in the prepare_for_download phase, and then the MobiLink server will use this time that is named the next_last_download_timestamp to generate the download stream for the client in the next sync. With this option the MobiLink server may considerably reduce redundant download for any clients that use a timestamp-based download on a busy Oracle database server.

In order to use this new command line option, the user ID the MobiLink server uses to connect to the Oracle database must have a selection permission of the following global views on the Oracle database:

GV$TRANSACTION, GV$SESSION, GV$LOCKED_OBJECT

740747 The Apache Relay Server did not respect the client's application timeout header (IAS-RS-App-Timeout-Minute). If the client's application timeout header value eas smaller than Apache's 'Timeout' directive, the Apache Relay Server would have taken longer to timeout the client's request, upto Apache's Timeout directive. This has been fixed.
740784 When OPENSTRING() is used in the FROM clause, the ROWID() function can be used to get the row number of each row read from the string. In execution plans where the same OPENSTRING() was executed more than one time, the ROWID() values for second and subsequent executions would not have given the correct line number: they would have continued to increase. In addition, error messages for rows loaded from the string value could have reported incorrect line numbers. This has been fixed.
740787 The connection property ApproximateCPUTime was reporting twice the amount of CPU time consumed by a connection. This has been corrected.
740792 The system function xp_getenv() could have become "sql security definer" in databases initialized to run system procedures as definer. However, all new procedures in version 16 and higher are supposed to remain as 搒ql security invoker.� This would have happened if a version 16 database was initialized with either the -pd flag for dbinit, or the "system procedure as definer on" clause was used in either the CREATE DATABASE or the ALTER DATABASE UPGRADE statements. This has now been fixed.

In order to repair the function in an existing database, run ALTER DATABASE UPGRADE PROCEDURE ON with an upgraded server.

740795 Java is not pre-installed with Mac OS X versions 10.7(Lion) and above. In order to use the administration tools on Mac OS X, Java SE Runtime Environment 7(JRE 1.7) must be manually installed. Without a JRE properly installed, the admin tools silently fail to start. When the admin tools were selected in the install, the user should have been notified that they will need to install JRE 1.7 if it was not already installed. This has been improved by providing the messages from 揑nstall SQL Anywhere� application and/or setup from 揟erminal� application. The messages will be displayed if JRE 1.7 is not installed on the system (Mac OS X) when installing the components that require Java.
740799 Performance of the server when run on Linux systems was much slower than when run on Windows. The performance of the server has now been improved so the speed on Linux should now be comparable to speeds on Windows.
740808 Multithreading .NET application could have failed with an access violation exception. Fixed by modifying thread synchronization code for some interface functions, and code for managed connection pooling.
740842 When using the ODBC Data Source Administrator to configure a SQL Anywhere 11 ODBC data source, the Database File 揃rowse� button would have returned a truncated string. Only the first 7, or 3 characters, of the file path are returned (depending on bitness). This problem has now been fixed.
740879 If a SQL Anywhere MobiLink client database had been rebuilt using the Unload utility (dbunload), and it previously had been upgraded using the Ugrade utility (dbupgrad) or using the ALTER DATABASE UPGRADE command, then subsequent synchronizations could have resulted in dbmlsync sending up the wrong schema definition to the MobiLink Server, or it could have resulted in a crash of the dbmlsync process. This can be worked around by dropping and re-creating all the SYNCHRONIZATION SUBSCRIPTIONS in the remote database after the rebuild or upgrade. This issue has now been resolved.
740895 If a NULL byte was used in the string provided to the DELIMITED BY, ROW DELIMITED BY, COMMENTS INTRODUCED BY, QUOTE, or ESCAPE CHARACTER clauses of a LOAD TABLE statement or OPENSTRING expression, then the server would have used all characters prior to the first null byte as the argument to the option. For example, if the user specified DELIMITED BY '#\x00@' then the server would use '#' as the column delimiter. This problem has been fixed.
740897 If a web service was created with authentication off, attempting to execute the procedure while specifying a user that required LDAP authentication would have failed. This has been fixed.
740992 SQL keywords from the CREATE FUNCTION statement are now suggested properly. Previously, opening the text completer when the caret was after the function name, but before the BEGIN keyword, would cave caused the Interactive SQL utility to suggest only CREATE FUNCTION and CREATE FUNCTION...BEGIN...END. A similar issue with the CREATE PROCEDURE statement was also fixed.
741078 A server could, in rare cases, have failed assertion 104301 ("Attempt to free a user descriptor with non-zero reference count") on database shutdown if there were active external environment calls at the time of shutdown request. This problem has now been fixed.
741082 On Windows, event log entries for version 12.0.1 MobiLink and SQL Anywhere database server services would have shown the service name only on the General tab of the Event Viewer/Windows Logs/Application window. There was no accompanying message.

For example, the following text could have been displayed:

SQLANYe_test12

As a workaround, the Details tab can be used to see the missing message for this event. This problem has now been fixed so that the Details tab will include the message, as in the following:

SQLANYe_test12: Starting service SQLANYe_test12

741205 The Relay Server and the Outbound Enabler were not designed for clients that did not maintain affinity isolation. The Outbound Enabler has been incrementally patched to fulfill such a need. The new Relay Server liberation option (socket_level_affinity=no) is an efficient way to have the Relay Server transform the traffic so that the relay mechanism will no longer be exposed to unintended use. In other words, the net effect is to support the previously unintended use with the liberation option. Liberation is not turned on by default and some customers may be willing to upgrade their Outbound Enabler, but not the Relay Server in the DMZ. So testing of such unintended use without liberation has been increased, and yet another case where such unintended use may still fail without using liberation has been found. This change is to fix the Outbound Enabler to deal with such a case. A workaround is to use liberation by explicitly setting socket_level_affinity=no.
741303 A DATE datatype would have included time components if the value supplied contained a time component. As a result, queries could have returned incorrect results when providing a DATE only predicate value. UltraLite now stores DATE datatypes correctly when setting or changing the value.
741408 Relay Server for Apache correctly sets the HTTP status code on the client's HTTP response, however, it didn't return that same HTTP status code back to the Apache webserver. This caused the wrong HTTP status code to be printed in Apache's access_log.

This has now been fixed.

741432 JSON Edm.DateTime values were being returned relative to the local time zone instead of UTC. This has been fixed.
741546 Authenticating with an LDAP server may have failed, even when the correct user name and password were given. This is dependent on the LDAP server being used and would not have been intermittent (i.e. if it failed, it failed all the time). This has been fixed.
741547 Authenticating with LDAP using an empty password could have caused the server to crash. This has been fixed.
741572 UltraLite could have returned incorrect results for queries using LIKE 'C%', where C contained 'large'/multi-byte characters. This affected only UTF-8 encoded databases (created with utf8_encoding=yes, which is the default). This has now been corrected.
741704 The changes for Engineering case 735654 were incomplete. Using a 11.0.1 database with a 12.0.1 or 16.0.0 .net provider and server, could still have resulted in the exception " Invalid option 'timestamp_with_time_zone_format' -- no PUBLIC setting exists". This has now been corrected.
741707 An access violation exception in the ADO.NET provider could have caused the database server to crash. This has been fixed.
741721 Calling the SAConnection.ConnectionString property could have caused the provider to crash with a NullReferenceException. This has now been fixed.
741724 If a DSN contained a connection string with double quotes (eg. 搒erver=MyServer;start=抎beng16 -o \攆ile with spaces.txt\� � �), the output from dbdsn -cm (intended to be a dbdsn command that would re-create the DSN) would have incorrectly escaped the double quotes. This has been fixed.
741870 If the database server was started with the 杅ips option, but the FIPS library was not available, the server would have given an error and then hung. The server process would have to have been killed. This has been fixed.
741954 Performance of schema API calls could have been poor for large schemas. Querying any table would have been slow with Sybase Central and Interactive SQL when the schema was large. This has been fixed.
741971 A TLS error (for example, a problem with a server抯 certificate) that occurred when executing a secure web service may have returned the error 揟he secure connection to the remote host failed: <NULL>� or 揌TTP request failed. Status code �0挃. On MacOS systems, the message 揟he TLS handshake failed, error code 0� would have been displayed on the server console. This has been fixed.
742010 A mirror server or copy node could have crashed if snapshot isolation was enabled and read-only connections were committed or rolled back. This has been fixed.
742013 Starting a database could have taken 10 seconds or more longer than it should have taken if the -ar, -ad or -xp database options were used with servers running on Windows. This could have occurred if files other than the database and current transaction log files for the server that was attempting to start the database were in the same directory as the database's log file, and these files were locked by the current server or another process. For example, if a single directory contained database files in use by a different server process, or a console log file in use by the server starting the database, a server starting the database with -ar, -ad or -xp would have started slowly. This has now been fixed.

As a workaround, the database files could be put in a directory containing only the database files for a single database.

742016 If a certificate used one of a number of algorithms (including SHA256, SHA384, and SHA512) for signing, SQL Anywhere would not have been able to use it for TLS or HTTPS. An error code of 12357 or 12394 may have been displayed. This has been fixed.
742023 Methods of the C++ DatabaseManager class could have failed or returned null, but not set any error in the supplied ULError object. For example, OpenConnection would return null but set the error code to 0 (NOERROR) if the database-manager was not initialized. Now an error is set.
742037 Requests to update or delete may return incorrect errors in an environment with many clients modifying entities.
742161 The conditions for a restartable download to be available have been improved. This only applies to UltraLite clients at this time that have been upgraded to build 1584.

IMPORTANT: These newer UltraLite clients may in rare cases cause older 16.0 MobiLink servers (prior to build 1584) to crash due to a previously undetected bug.

742293 A case sensitive database with the DBA user name spelled in a way other than 慏BA� (for example, 慸BA� or 慸ba�) and password other than 憇ql� could have failed to be unloaded. This has been fixed.
742355 SQL Anywhere ADO.NET drivers without the fix for Engineering case 741707, could have sent invalid connection pooling requests to the server which could have resulted in a server crash. This has been fixed so that the server will not crash even if the client makes invalid connection pooling requests.

SQL Anywhere ADO.NET drivers without the 714707 fix may have requests fail with the error "Run time SQL error -- *** ERROR *** Assertion failed: 104909". The ADO.NET driver needs to be updated if this occurs.

742365 A number of incorrect behaviors could have occurred when using database mirroring, including:

- in rare, timing dependent cases, a mirror or copy node could have crashed, hung or failed assertion 102010

- when a mirror or copy node reconnected to the primary or parent, it was possible for it to not request, write or apply log pages.

- when a mirror was yielding to a preferred server, or the "ALTER DATABASE SET PARTNER FAILOVER" statement was executed on the primary, it was possible for the previous mirror to not take over as the primary (both partner servers could have had the mirror role)

These problems have been fixed.

742377 The SQL Anywhere Monitor could have raised alerts for high memory usage incorrectly. This has been fixed.
742543 When iterating through the parameters of a SACommand using 揻oreach (SAParameter param in command.Parameters)�, the first iteration would have worked, but subsequent iterations would not have had the parameters. This has now been corrected.
742549 The Validation utility (dbvalid) would have returned EXIT_BAD_DATA(=2) if an invalid object name was included in the object-name-list. If these obests are not found, ideally the error EXIT_FAIL(=1) should be returned instead. This has been fixed.
742551 The SQL Anywhere Monitor did not localize the desktop for the 慳dmin� user properly. This has now been fixed.
742630 After opening the Sample Range Properties window, some counts could have been incorrect in the Events tab for subsequent invocations of the Sample Properties or Sample Range Properties windows. This problem has been fixed.

A workaround is to re-open the profiling session after opening the Sample Range Properties window.

742729 If launching the SQL Anywhere Monitor failed, the error message would have been garbled for FR and DE locales. This has been fixed.
742733 When calling a procedure without a RESULT clause using ODBC and JDBC, the performance was not as fast as it could have been. This has been fixed so that the performance has been improved.
742768 The Deployment wizard would have accepted an invalid product code. Now, the Next button is disabled until a valid product code is entered.
742779 Connection status in the SQL Anywhere Connection widget was not localized. This has been fixed.
742780 Sparkline in the Table widget would have always displayed the one hour graph when a different scale was chosen, another dashboard was selected, and then the original dashboard was reselected. This has been fixed.
742857 When reading Long Varchar or Long Binary columns using SADataReader, the results could have been truncated to 65535 chars. This has now been fixed.
742862 On Windows systems, if the database server address cache file (sasrv.ini) was not writable by the current user, repeated connection attempts to a non-cached server may have been slow. This has been fixed.
742872 The server could have become unresponsive or extremely slow if it was involved in multiple high-availability configurations (for example, if it was running a number of read-only copy nodes), and there were networking problems causing loss of connectivity. This would have been more noticeable on single-processor machines. This has been fixed.
742949 If a user was logged into a mirror or a copy node, or an object owned by that user was in use on a mirror or copy node, and the user was dropped on the primary server using the REVOKE CONNECT statement, the mirror or copy node would have stopped with a fatal assertion. This has been fixed. Connections logged in as the dropped user, as well as connections using objects owned by that user, will now be dropped before the user is dropped.
742979 If data from a text file was imported, the contents of the file could have been misinterpreted, resulting in garbage characters being imported. For this to happen, the file must have been encoded in Unicode, must have contained a literal string (enclosed in apostrophes) which contained a backslash ( "\" ) character, and the string must have contained characters which cannot be expressed in 7-bit ASCII. This has been fixed.
743027 HTTP Basic authentication in persistent HTTP synchronizations could have reported the error: -1305: MobiLink communication error -- code: 216. This has been fixed.

Note, this fix also applies to UltraLite and UltraLiteJ for Android.

743046 When the Apache httpd shutdown raced ahead of the Outbound Enabler shutdown, the Up channel may never have been gracefully shutdown, as Apache terminates the worker process non-gracefully. This could in turn could have caused the Relay Server State Manager (rshost) to leak System V semaphores on shutdown. The 搃pcs 杝� command can be used to review System V semaphore being used. This has been fixed by eliminating the latency on Up channel shutdown so that the race condition is much less likely to happen. This change is not a complete solution, but it reduces the possibility of this problem occurring.
743048 Opening of pooled connections was taking longer than necessary. Open performance of pooled connections has now been improved by caching and reusing some internal values.
743069 When manually submitting an error report with a command like: dbsupport -sc ... , usage statistics would have been submitted, but the report itself would not. This has been fixed.
743243 Users could not use Sybase Central to view the contents of a view owned by SYS unless they had exercise rights on the SELECT ANY TABLE system privilege. This has now been corrected.
743341 In rare cases, if an application made an external environment call that in turn performed a server-side request, then the server could have crashed or lost an update if the server-side request resulted in a deadlock error. This problem has now been fixed.
743364 The fix for Engineering case 740747 - "The Apache Relay Server did not respect the client's application timeout header" was incomplete for Apache 2.2.21 and 2.2.24 on Linux systems. This has been fixed.
743367 Sybase Central would have reported an internal error on startup if it was configured to run with recent updates of the Java Virtual Machine (JVM), for example, 1.6.0 update 45, and if the Fast Launcher was turned on. This has been fixed.
743448 If a column with a default was added to a table with existing data and the default was subsequently changed, some rows in the table could have been left in an inconsistent state resulting in assertions, crashes or incorrect results. This has now been fixed. A work around would be to unload and reload the table before the second ALTER.
743465 Metric collection was not being done for most metrics. This has been fixed
743469 Setting the element of an array in a procedure could have caused the server to crash under some circumstances. This has been fixed.
743562 Using the 慏BCreatedVersion� DBTools method against a version 16 database would have returned an incorrect value. This has been fixed.
743572 Clicking on a backup's 'backup result' link in the 'Back Up & Restore' panel for a database may have resulted in the error:

The task which created this backup (BP-XXXX) could not be found.

This has been fixed.

743578 In extremely rare, timing dependent cases, the server could have crashed when a database was starting. This has been fixed.
743587 When duplicating a user via copy-and-paste or drag-and-drop, the password for the new user was copied from the original user. Now, Sybase Central prompts for the new user抯 password.
743592 When rebuilding a database that used SQL Remote replication, the rebuild may have failed because a user id was already in use for a system user id in the new software version. The problem only occurred when the customer created database users with server version 6.0.3.2928 or before, and never rebuild the database using dbunload option -m. This has been fixed.
743662 On a heavily loaded server, client connections could have been incorrectly dropped in timing dependent cases. If this occurred, the client would likely get "Communication error" error and the server would report " Disconnecting Client - 120 seconds since last contact" (or a different number of seconds) in the console log.

This has been fixed so the dropped connections are less likely. Note that these errors can still correctly occur if there is a network issue or if either the client or server computers completely bog down (most likely due to limited resources).

743684 The Extract Database wizard would have reported that the SELECT ANY TABLE system privilege was required, when in fact the SYS_REPLICATION_ADMIN_ROLE role is actually what is required. This has been fixed.
743685 If a user was on the Databases panel and filtered the list, then chose another panel, switching back to the Databases panel may have refreshed the databases list, but not have reapplied the filter. This has been fixed.
743688 If the MobiLink Profiler database (MLProfilerDB) was closed while a profiling session was active then the profiling session was ended, a Java RuntimeException internal error would have occurred. This has been fixed. Now appropriate error dialogs are displayed.
743689 Changing the properties for a maintenance plan and setting an incremental backup schedule would not have save it if the 慚ake incremental backups� checkbox was not selected. This has been fixed.
743691 In the Apply Maintenance Plan wizard, the user can choose to apply the plan to databases that use another plan. If the user gave an invalid maintenance plan name, or a maintenance plan that had no databases assigned to it, all databases would have been chosen. This has been fixed.
743692 Servers with the fix for Engineering case 742355 could have returned garbage characters for connection_property( 'Name' ), if there were non-ASCII characters in the CON connection parameter. This has been fixed.
743743 When an ADO.NET connection was closed and returned to the connection pool by the SQL Anywhere .NET Data Provider, the connection name was cleared. However, when the pooled connection was reclaimed from the pool, the ConnectionName was not restored. This problem has now been corrected.
743761 When editing Event Subscriptions for a user, the list of objects took longer and longer to populate when adding or removing an object. This has been fixed.
743778 Validation of a recently truncated table using a read-only server may have caused a crash. This has been fixed
743779 Typing a very long expression in the Search box or a Filter box would have resulted in a horizontal scroll bar appearing. This has been fixed.
743857 UltraLite may have blocked concurrent database access while synchronizing, during the UL_SYNC_STATE_FINISHING_UPLOAD synchronization state. This has been fixed.
743862 UltraLite on iOS previously required that certificates named in synchronization parameters be packaged as resources in the root of the application bundle. Now, if the named certificate resolves to a filename (directly), that file is used instead of searching the bundle. This means any certificate file in the application sandbox is now accessible given the proper path.
743871 If the query of a cursor used the OrderedGroupBy algorithm in its execution plan, and was used to perform fetches that reversed direction of the scan, incorrect results could have been returned. This could have been observed for a cursor that fetched the first row, then second, then returned to the first row of an aggregate query. This has been fixed.
743948 When a task was chosen to run in the 慠un new task� wizard, if the 慣ask Parameters� page had text inputs with the 慏efault� prompt text, choosing an item with browse would have overlayed that item name on top of the 慏efault� text, making it very hard to read. This has been fixed.
744027 The SQL Anywhere PHP External Environment supports several versions of the PHP interpreter. The SQL Anywhere install bundle includes a separate PHP external environment dll or shared object for each supported version of PHP. In addition, whenever support for a new version of the PHP interpreter is added, the SQL Anywhere install bundle is updated to include the new PHP external environment dll or shared object for the new version of the PHP interpreter. Going forward, the SQL Anywhere install bundle will no longer be updated with additional PHP external environment dlls or shared objects when support for new versions of the PHP interpreter are added. Instead, the new PHP external environment dlls and shared objects will now only be available on the download site.
744039 It was not possible to connect to a tracing database when profiling using a client-only install. This has been fixed. Now, only opening an analysis file is prevented in a client-only install.
744044 When testing a connection to a MySQL remote server, Sybase Central could sometimes have reported that the connection failed, when in fact it had succeeded. This has been fixed.
744047 In some cases, a server with a database containing procedures with nested row parameters could have crashed. This has been fixed.
744130 When adding a database, if the user did not have permission to apply maintenance plans and tried to set one for the database, the wizard would have given an error after clicking Finish. Going back to the maintenance plan page to select the default plan would have resulted in the wizard continuously asking for credentials after Finish was clicked. This has been fixed. The maintenance plan page is not shown if the user does not have the permission to set it.
744132 If a database name started with a number it could not have been moved with the Move Database wizard. The move would have failed with the error:

Error in the search query "database:4" near "database:4".

Error code: -20090 (DBCLOUDERR_SEARCH_STRING)

This has been fixed.

744212 On the Databases panel, columns previously hidden would have re-appeared when revisiting the panel. The Servers panel also had a blank menu for the cloud. These problems have now been fixed.
744228 Paging to a page other than page 1 on the Servers or Databases panels, would not have reset the page number if another panel was visited and then the panel was gone back to. This has been fixed.
744299 If a 12.0.l database was added to a 16.0 server with the name beginning with a digit, a copy database could not have been created for it. This has been fixed.
744458 Mac OSX, SUN, Linux, AIX, and HP platforms no longer require setting the shared library path before launching the Interactive SQL utility. The path is now set by the launcher using the 'LIBRARY_PATHS' setting in the dbisql.ini file.
744754 The INPUT statement or the Import wizard in the Interactive SQL utility could have skipped rows from a TEXT formatted input file if it contained strings which were delimited by quotation marks, and the string contained an apostrophe. This has been fixed. Note, there was no problem if the strings were delimited by apostrophes.
744845 The context menu for the SQL Statements panel includes a "Help on" menu item if there might be online help for the statement under the mouse. Clicking the "Help on" menu item opens help in a browser if local help is not installed. The process of opening the help has been sped up, especially if no help files were installed. How much faster depends on the network connection.

Also, the software is now more tolerant of whitespace between keywords. For example, suppose the SQL Statements panel contained the following valid statement, spread across four lines:

CREATE

VARIABLE

retcode

INT

Clicking "Help on" in the context menu would have failed to open help because of the newlines that separate the tokens. Now, help for the CREATE VARIABLE statement will be opened.

745191 The Outbound Enabler has a fixed limit of 1000 active connections with the backend server per Relay Server. The Outbound Enabler would have crashed when the limit was exceeded. This has been fixed by relaxing the internal limit to 32768 active connections. An OEE1051 error is given when that limit is now exceeded.
745198 The ODBC driver could have exhibited inconsistent behavior when calling a stored procedure with blob parameters. The problem only occurred with data-at-execution-time blob parameters. Blobs of type Varchar worked correctly, but blobs of type binary did not. The problem has now been fixed.
745250 After adding a new MobiLink server in the MobiLink Farm Configuration Resource window, the new server was not shown in the "Identify the servers in the farm" field. This has been fixed.
745256 If a cloud server required a proxy server to get to the internet, it would have been unable to contact the Cloud Software download site. The Console would have reported: "The list is being updated", stayed like that for a very long time, and then reported: "There is nothing to download". This has been fixed.

Note, until SP4 becomes available, to enable current Clouds that have a proxy setting to take advantage of this fix, the new patch "dbcloud-fix-checkforupdates-proxy.patch" must be applied to the Cloud.

745266 The "Failed Synchronization Rate" metric did not show a trend when failed synchronization was 0. This has been fixed.
745267 The maximum value allowed for the OData Producer PageSize option was only 1000. This was deemed unreasonably small and has now been increased to 1,000,000. The default setting has not been changed.
745394 When connected using TDS (Open Client or jConnect), executing a procedure that contained a SELECT INTO statement, could have caused the server to crash. Note that chained mode needed to be off for this to have occurred. This has now been fixed.
745468 If a Directory Access server accessed a file with a size over 4GB, the file length would have been reported as a size smaller than 4GB. This has been fixed.
745564 When using the LogFile connection parameter, the timestamp logged before each connection was truncated to only include the first digit of the seconds. This has been fixed.
745646 Downloads could have been incorrectly skipped in persistent connections. This has been fixed.
745648 In rare timing dependent cases, near when a transaction log rename was being performed, the sa_mirror_server_status log_written or log_applied columns could have been inaccurate. This has been fixed.
745838 Too many sockets opened between RSOE and SUP
746082 When an application using ADO.NET had disconnected all of its connections so that they were pooled, an autostarted database, and/or server, could have autostopped, causing the server to need to be autostarted again if the same application connected again. This has been fixed so that in most cases, the presence of a pooled ADO.NET connection will prevent the server from autostopping. Note that in cases where pooled connections cannot be reused (for example, connections using integrated login, or the user's password was changed), the database and/or server may still autostop even with this fix.
746108 The MobiLink server could have crashed when it was trying to upload updates to tables that contained BLOB columns, if the upload_update script took BLOB columns in its Where clause and the parameters in the script are specified by question marks. To prevent the crash, a workaround is to change the question marks to use named parameters instead. This problem has now been fixed.
746236 Under very rare circumstances, the server may have crashed during server shutdown if a SQL Anywhere debugger was still connected. This has been fixed.
746290 On Windows systems, CPUs numbered 32 and above were not detected correctly and treated as offline. This has been fixed
746461 The OData Producer now respects Content-Encoding and Accept-Encoding HTTP request headers as specified by the HTTP 1.1 spec:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

The Content-Encoding header is used by clients to indicate the encoding of the request body. The Accept-Encoding header is used by clients to indicate the preferred encoding of the response body.

746575 When a .NET application disconnected and then reconnected to the server, the timestamp_with_time_zone_format option was not re-established to the required .NET default ('YYYY-MM-DD HH:NN:SS.SSSSSS+HH:NN'). When the connection is pooled, the server resets server options to their defaults. When a connection was retrieved from the connection pool, the SQL Anywhere .NET provider must re-issue a SET TEMPORARY OPTION statement. This lead to a DateTimeOffset (timestamp with time zone) conversion error at run-time.

A work-around is to execute a ...

SET OPTION PUBLIC.timestamp_with_time_zone_format = 'YYYY-MM-DD HH:NN:SS.SSSSSS+HH:NN'

statement which sets the default required for all .NET connections.

This problem has been fixed.

746586 In rare cases, the server may have crashed or returned an incorrect SQL error if the UPDATE clause of a bypass update statement had an invalid subselect as table-expression. This has been fixed.
746650 The units reported for the system dbpace file size metric was MB and should have been KB. This has been fixed.
746678 The XML output from the Event Trace Data File Management utility (dbmanageetd) did not display the correct output of strings if the ETD file was generated by a database that was encoded in something other than UTF-8. This has now been fixed.
746688 The following improvements and bug fixes have been made to the SQL Anywhere OLE DB provider:

1. When a column cannot be fetched in its entirety, set status to DBSTATUS_S_TRUNCATED instead of DBSTATUS_S_OK and length to actual length, not amount fetched.

2. IRowsetUpdate methods InsertRow/Update should insert rows in manual commit mode (i.e., commit in batches) rather than autocommit each row.

3. Improved support for DBTYPE_DBTIMESTAMPOFFSET data types.

4. In order to identify columns that are DEFAULT AUTOINCREMENT, IColumnsInfo::GetColumnInfo now sets the DBCOLUMNFLAGS_ISROWVER bit for those columns. Microsoft defines a column with this attribute as a non-writable versioning column (such as the SQL Server TIMESTAMP) which suits SQL Server. Note, however, that SQL Anywhere supports versioning columns that are writable.

5. Corrected failure to describe money/smallmoney as DBTYPE_CY (currency type). Also corrected OLE DB schema queries DBSCHEMA_COLUMNS, DBSCHEMA_PROCEDURE_COLUMNS, and DBSCHEMA_PROCEDURE_PARAMETERS results for DBTYPE_CY.

6. Corrections to schema rowset information (DBSCHEMA_COLUMNS, DBSCHEMA_PROCEDURE_COLUMNS, and DBSCHEMA_PROCEDURE_PARAMETERS) for datetime/time precision and scale.

7. Corrections to 搑un-time� information for datetime/time precision and scale.

8. Add "DATETIME" to list of DBPARAMBINDINFO.pwszDataSourceType types for SetParameterInfo (SQL Server uses this undocumented type name). Type names are usually of the form 揇BTYPE_xxx� (for example, 揇BTYPE_I4�, 揇BTYPE_STR�, 揇BTYPE_DBTIMESTAMP�).

9. Adjust GetConversionSize values for TIME, DATETIME, DATETIMEOFFSET data types (only 6 fractional digits are supported by SQL Anywhere).

10. Fixed memory leak caused by failure to free rows whose refcount is 0 in Update().

11. Fixed possible memory corruption in calls to IRowsetChange::SetData, IRowsetChange::InsertRow, ISequentialStream::Write, and IRowChange::SetColumns.

12. Fixed performance problem when DataConvert is used when no conversion is required.

13. The LoadCommand, DeleteCommand, and SaveCommand methods of the ICommandPersist interface did not qualify system tables references with an owner name. This has been corrected.

14. The OLE DB provider accepts two cbBookmark values, 1 which is the 搒hort� DBBMK_FIRST/LAST value, and 4 or 8 depending on the bitness of the provider. The 64-bit provider flags �4� was an illegal value for cbBookmark. The 32-bit provider flags �8� was an illegal value for cbBookmark. The OLE DB provider should accept both 4 and 8 as the length of a bookmark value and fetch the appropriate 32-bit/64-bit bookmark value from memory. This problem has been corrected. The fix affects IRowsetLocate::GetRowsAt, IRowsetLocate::Compare, RowsetLocate::GetRowsByBookmark, IRowsetLocate::Hash, and IRowsetScroll::GetApproximatePosition, and IRowsetExactScroll::GetExactPosition. Both 32-bit and 64-bit providers now support 4-byte and 8-byte bookmark values, in addition to 1-byte values.

746767 In a .NET application, it was possible to store a decimal number into a NUMERIC/DECIMAL table column when the precision of the decimal number exceeded the precision of the NUMERIC/DECIMAL column by 1.

Also, when the stated precision of a decimal value parameter was much less than the actual precision of a decimal value, it is possible to corrupt the heap.

parm.Precision = 5;

parm.Value = (decimal) 123456789;

These problems have now been fixed.

746924 In very rare, timing dependent cases, mirroring servers (likely more than one) could have hung indefinitely.

If, while processing ALTER DATABASE SET PARTNER FAILOVER, connections between the primary and mirror servers timed out, or were dropped, before the failover operation completed, the primary server could have stopped accepting connections.

The sa_mirror_server_status log_written offset could have been incorrect about the time a log rename occurred.

746935 The dbo.sp_list_directory() stored procedure can be used to obtain information about directories and files that are accessible to the SQL Anywhere Server. Currently the sp_list_directory() procedure returns the following three columns:

file_path long nvarchar the path of the server accessible file or directory

file_type nvarchar(1) either F for file or D for directory

file_size unsigned bigint the size of the file or NULL for directories

In order to provide more information about the various files and directories, dbo.sp_list_directory() has now been enhanced to return five additional columns. These five additional columns are:

owner nvarchar(128) the owner of the file or directory

create_date_time* timestamp with time zone the date and time the file or directory was created

modified_date_time* timestamp with time zone the date and time the file or directory was last modified

access_date_time* timestamp with time zone the date and time the file or directory was last accessed

permissions varchar(10) the set of access permissions for the file or directory

All other aspects of dbo.sp_list_directory() � including the set of system privileges and secure feature privileges � remain unchanged.

A database either has to be upgraded or initialized in order for applications to obtain this new information from dbo.sp_list_directory(). In addition, if an upgraded or newly initialized database is subsequently moved to an older version of the server, then the new columns will continue to be returned but the values of the new columns will be NULL.

747038 When the HAVING clause of a query contained predicates of the following form, the server attempted to estimate the selectivity based on the column statistics:

- HAVING SUM( column ) <= constant

- HAVING SUM( column ) < constant

- HAVING SUM( column ) > constant

- HAVING SUM( column ) >= constant

so that incorrect selectivity could be returned in the following cases:

- the column was a number but the constant was not (e.g., it was a date).

- the comparison relation was <> or = (these can not be estimated).

- the comparison was of the form SUM(column) LIKE string_constant.

This has now been corrected.

747053 If the primary server failed and the mirror took over as the new primary, the old primary could have failed to start and reported "database is not compatible with primary; files must be replaced" in the console log, even though it should have been able to start. In order for this failure to have been reported when it should not have been, there had to be over 64 transaction log pages since the last checkpoint.

This has been fixed. Note that this failure (database is not compatible) can still validly occur in certain cases.

747118 In the MobiLink Plugin, if the MobiLink Server CommandLine was renamed and then deleted it without shutting down Sybase Central, the delete confirmation dialog would have shown the old name for the commandline instead of the new one. This has now been corrected
747141 In very rare timing dependent cases, a copy node's transaction log could have been corrupted if the primary failed over to the mirror. In order for this to have occurred, the old primary would have needed to still be running and not in the process of stopping during the failover (for example, running extremely slowly due to lack of machine resources). If this problem did occur, the most likely failures would be assertion 100902, 100903 or 100904, but other failures were also possible. This has been fixed.
747205 The geospatial method ST_BUFFER is now supported for all geometry types. This method is compatible with the SQL/MM and OGC standards. ST_BUFFER returns the ST_Geometry value that represents all points whose distance from any point of an ST_Geometry value is less than or equal to a specified distance in the given units.

ST_GEOMETRY::ST_BUFFER( distance double, unit_name long varchar )

- distance: The distance the buffer should be from the geometry value. Must be greater than or equal to 0.

- unit_name: The units in which the distance parameter should be interpreted. Defaults to the unit of the spatial reference system. The unit name must match the UNIT_NAME column of a row in the ST_UNITS_OF_MEASURE view where UNIT_TYPE is 'LINEAR'.

- Returns the ST_Geometry value representing all points within the specified distance of the original geometry.

The ST_Buffer method generates a geometry that expands a geometry by the specified distance. This method can be used, for example, to find all points in geometry A that are within a specified distance of geometry B. The distance parameter must be a positive value. This method will return an error if distance is negative. If the distance parameter is equal to 0, the original geometry is returned. The ST_Buffer method is best used only when the actual buffer geometry is required. Determining whether two geometries are within a specified distance of each other should be done using ST_WithinDistance instead.

747227 The MobiLink Server leaked memory when using secure streams on Mac OS X systems. This has now been fixed.
747231 The default query to fetch the next 'last download' timestamp was slow when using a HANA consolidated. This has been fixed. The server now caches the results of this query, so its value can be up to 8 seconds out of date. This can result in extra rows being downloaded.
747277 A new database property, BackupInProgress, has been added. Querying the property will return 'on' when there is a backup happening, and 'off' otherwise.
747308 The Entity Framework method Import would have failed to find procedures if the procedures had comments in front of 慉LTER PROCEDURE�. This has now been corrected.
747334 A client application could have hung when opening a pooled connection following a failed connection. This has now been fixed.
747342 On Windows systems, the Data Source utility (dbdsn) would have failed with the error 揢ser Data Source �<name>� could not be written to registry� when trying to create a DSN with a name longer than 32 characters. This is a Windows limitation so a more appropriate error message is now displayed.
747358 If a proxy was set to reach the internet, it was not used by the software update checker. This has been fixed.
747426 Now, dbmlsync/dbremote support synchronization/replication for databases in a cloud. Instead of directly accessing the offline transaction log files, dbmlsync/dbremote will retrieve offline transaction logs through the database server. The user ID that is used by dbmlsync/dbremote to connect to the synchronization/replication database must have the READ FILE and WRITE FILE privileges and all the offline transaction log files must be in the online transaction log directory. The database server must have the same level of SP in order to support this feature. Dbmlsync/dbremote will retrieve the offline transaction logs through the server, if the given offline transaction log directory cannot be opened or contains no offline transaction log files, but offline transaction logs are required. Synchronized/replicated offline transaction log files will also be deleted through the server, if the database option, delete_old_logs is set to be 慜n�, 慏elay�, or 憂 days�.
747538 The UltraLite runtime may have generated UUID values which were not globally unique on iOS 7. This has been fixed.
747637 If an ODBC application performed a wide or array INSERT, where the number of rows times the number of columns was more than 32767, the INSERT may not have been as efficient as it should have been. This has been fixed so that the wide or array INSERT is more efficient in this case.
747649 In rare timing dependent cases, a copy node could have failed with a log mismatch message or an assertion failure when a log rename was performed. In order for this problem to have occurred, in addition to processing the log rename, the copy node needed to be transitioning from requesting to receiving log pages from its parent, or a connection to its parent would have had to be dropped and reconnected. This has been fixed.
747714 Trying to save the Application Profiling recommendations could have failed. This has been fixed.
747794 The server now recognizes when it is running on Windows 8.1 and Windows Server 2012 R2 operating systems.
747798 A new system function has been added, READ_SERVER_FILE(). This function reads data from a specified file on the server and returns the full or partial contents of the file as a LONG BINARY value.

Syntax:

READ_SERVER_FILE( filename ) [, start [ , length] ]

Parameters:

- filename LONG VARCHAR value indicating the path and name of the file on the

server.

- start The start position of the file to read, in bytes. The first byte in

the file is at position 1. A negative starting position specifies

the number of bytes from the end of the file rather than from the

beginning.

* If start is not specified, a value of 0 is used.

* If start is zero and length is non-negative, a start value of 1

is used.

* If start is zero and length is negative, a start value of -1 is

used.

- length The length of the file to read, in bytes.

* If length is not specified, the function reads from the starting

position to the end of the file.

* If length is positive, the function read ends length bytes to the

right of the starting position.

* If length is negative, the function returns at most length bytes

up to, and including, the starting position, from the left of the

starting position.

Returns:

LONG BINARY

Remarks:

This function returns the full or partial (if start and/or length are specified)

contents of the named file as a LONG BINARY value. If the file does not exist or

cannot be read, NULL is returned.

filename is relative to the starting directory of the database server.

The READ_SERVER_FILE function supports reading files larger than 2GB. However,

the returned content is limited to 2GB. If the returned content exceeds this

limit, a SQL error is returned.

If the data file is in a different character set, you can use the CSCONVERT

function to convert it. You can also use the CSCONVERT function to address the

character set conversion requirements you may have when using the

READ_SERVER_FILE server function.

If disk sandboxing is enabled, the file referenced in filename must in an

accessible location.

Privileges:

When reading from a file on a client computer:

* You must have the READ FILE system privilege.

* You must have read permissions on the directory being read from.

Standards: SQL/2008 Vendor extension.

Example:

The following statement reads 20 bytes in a file, starting from byte 100 of the

file.

SELECT READ_SERVER_FILE( 'c:\\data.txt', 100, 20 )

See also

* xp_read_file system procedure

* CSCONVERT function [String]

* Disk sandboxing

747805 For Syntax 2 of the DELETE statement and Syntax 2 of the UPDATE statement the error detection behaviour of the server has been improved. These two syntax forms allow an additional FROM clause that may contain the table-name of the updated or deleted table, for example:

DELETE

FROM [owner.]table_1 [ [ AS ] correlation-name ]

FROM [owner.]table_1 [ [ AS ] correlation-name ] ...

WHERE ...

and

UPDATE [owner.]table_1 [ [ AS ] correlation-name ]

SET columns_1 = ...

FROM [owner.]table_1 [ [ AS ] correlation-name ] ...

WHERE ...

If the DELETE or UPDATE clause and the additional FROM clause have a table reference that contains the same table name, in the above example "table_1", then the server can only decide whether both are identical table references if one of the following conditions is true:

- both table references are not qualified by specifying a user ID

- both table references are qualified by specifying a user ID

- both table references are specified with a correlation name

In cases where the server cannot decide whether the above table references are identical or not it will now return an SQL error to prevent the user from unintended semantics like deleting and updating to many rows.

747810 When a mirror or copy node was shutdown while a connection was blocked on a lock held by an internal connection which was applying log operations, the shutdown could have hung. Note that mirror or copy node databases shutdown and restart automatically for a number of internal reasons, for example, the mirror database can shutdown and restart if the connection between the partner servers becomes disconnect but the primary partner is still running. This has been fixed.
747819 When the server encounterd a file error when writing to an ETD file, it should have returned it as a SQL error; but in some cases, the error is not returned. This has been fixed.
747898 When using the SQL Anywhere JDBC driver, if two or more addBatch calls are followed by an executeBatch and then the application used executeUpdate in non-batched mode, the application would have crashed. This problem has been fixed.

A work-around is to use addBatch/executeBatch for all executions of the prepared statement once addBatch/executeBatch has been used.

747910 In certain cases, initialization of the cloud could result in an invalid IPv6 address among those listed for a cloud host. This has been fixed.
748083 The server may have crashed when using ARRAY or ROW type values in string operations. This has been fixed.
748096 If a stored procedure containing a single SELECT statement that uses a key join was inlined, and the connected user was not the procedure owner and has no select permissions on the table(s) in the query, a permission error could have been returned. This has been fixed.
748102 The cloud Agent could hang after an HTTP GET request returned an HTTP status code of 4xx. The most common scenario for this issue was when starting a cloud on the primary server, the Agent would have received a 404 or 401 HTTP error on its first poll request and hang. In that case, the cloud Console would have reportd 揾ost disconnected� for the host. This has been fixed.
748170 In rare timing dependent cases, a copy node that had just processed a Log rRename could have failed assertion 200505, if its child was requesting log pages. This has been fixed.
748349 In extremely rare timing dependent cases, it was possible for the transaction log on a copy node to have become corrupted. In order for the potential corruption to have occurred, the copy node needed to have a parent other than the primary/root server, and the parent must have been writing a page to the transaction log at the same time the child copy node was requesting the last page of the parent's transaction. Note that once the copy node has caught up the log operation of the parent, the parent sends pages to the copy node during commit operations. This problem could have only occurred when the copy node is requesting pages from the parent, and not when the parent is sending pages to the copy node. This has been fixed.
748351 Mirror and copy node servers were not applying transaction log changes as efficiently as they could have been. This has been fixed to be more efficient.
748414 Relay Server monitoring provided via the SQL Anywhere Monitor may have suffered stack overflow exceptions on the Java data collection client. This is now fixed.
748429 With some versions of Linux and Unix, the Port field of the Connect to MobiLink Server window was not displayed correctly; it was too narrow for the port number to be visible. This has been fixed.
748450 In some rare cases, the server may have crashed while processing HTTP/HTTPS requests. This has been fixed.
748531 Synchronizations could have spuriously failed if the MobiLink server was configured to use end-to-end encryption, but the client was not. This has been fixed.
748535 The Linux GTK and Mac OS X UI installer improperly reported insufficient disk space if there was more than 2 TB of available disk space. This has been fixed.

A workaround is to use setup -nogui to avoid the use of the graphical installer. Alternatively, install to a smaller disk drive.

748538 Specifying the command line option -nogui after the option -silent when running the UNIX setup script would have caused the -silent flag to be ignored. This has been fixed. The -nogui option now has no effect if -silent is specified at any point.

A workaround is to avoid specifying -nogui when doing a silent install.

748541 When upgrading a 32-bit SQL Anywhere installation containing SQL Anywhere Monitor, the 64-bit server would have been installed, whether or not it was previously installed. Similarly, upgrading a 64-bit SQL Anywhere installation containing SQL Anywhere Monitor would have caused the 32-bit server to be installed, whether or not it was previously installed. This has been fixed.
748548 If a database contained subscriptions for more than one MobiLink user, and at least one of those users had a name containing non-alphanumeric characters, then it was possible for synchronizations to fail and generate incorrect error messages. The messages generated may have included, 揟here is no synchronization subscription for user ? to publication ?� or 揅ommunication protocol mismatch. Unable to negotiate an appropriate communication protocol with the MobiLink server.� Other error messages were likely also possible. This has been fixed. Having non-alphanumeric characters in MobiLink user names should now be handled correctly.
748557 Opening the text completer when connected to an ASE database could have caused the Interactive SQL utility to crash. This has been fixed.
748710 Under some circumstances, the server could have crashed when executing a procedure with NO RESULT SET clause. This has been fixed.
748717 UltraLiteJ for Android no longer supports ARMv5 CPU architectures. The minimum supported CPU architecture is now ARMv7.
748725 When MobiLink uploaded a UUID (GUID) to SAP HANA, hyphens would have been added to the resulting string, resulting in a VARCHAR(40) field instead of a VARCHAR(36). This change removes the hyphens from UUIDs so that UUID columns can now be stored as a VARCHAR(36) in SAP HANA, which matches the SAP HANA default UUID format.
748972 When the Utilization Graph pane was enabled, if the Chart pane did not have a vertical scroll bar the Zoom To Selection menu and toolbar button might not have worked correctly, and scrolling might not have worked correctly. This has been fixed.

A workaround is to disable the Utilization Graph pane, or to resize the Chart pane so that it has a scroll bar.

748976 If a database had one or more of the following public options set differently:

- ansinull=On

- conversion_error=On

- divide_by_zero_error=On

- sort_collation=Internal

- string_rtruncation=On

, and the specified value was then set as a temporary option for the connection creating a materialized view, recovery of the CREATE MATERIALIZED VIEW statement would have failed. This has been fixed.

Note that the fix applies only to the CREATE statement executed with the fixed version of the server.

748989 The cloud infrastructure would have always returned an error if the AlterCloud task was used to attempt to set a different set of secure features. This problem has now been fixed.
749074 If the Data Source utility (dbdsn) was used with the -or command line option to create a DSN that used the SQL Anywhere Oracle driver, the driver name would have been incorrect. The driver name should be 揝QL Anywhere <version> - Oracle� rather than 搃Anywhere Solutions <version> - Oracle". This has been fixed.
749081 The HANA server would have complained with the following error:

"unsupported function included: CURRENT_TIMESTAMP is not supported by generated always"

when trying to run the MobiLink server setup script file, synchana.sql against a database running on a HANA server, if the HANA server revision was 1.00.64 or later. This problem has now been fixed.

749169 In some rare cases, attempting to modify a database file after the server using that file had been shut down using the Stop Server utility (dbstop) would have failed with 'permission denied'. For this to have occurred, the server must have been using the external environment (e.g. php). This is a very timing sensitive bug and rarely reproduces. This has been fixed.
749170 When invoked with a very large integer value, the hours() function could have returned an incorrect result. For example, hours function invoked with a �12:00� time and a very large integer argument would return a value like �22:44�. This has been fixed.
749256 Strong encryption now achieved using OpenSSL

--------------------------------------------

Prior to this change, SQL Anywhere included a Certicom encryption module that provided strong encryption used throughout the software. Now, SQL Anywhere includes an OpenSSL encryption module for the strong encryption. The Certicom encryption module has been removed.

Read the following descriptions to determine how you may be impacted by this change.

FIPS encryption now requires the private key of an identity file to be encrypted using AES

- OpenSSL FIPS supports AES encryption for the private key of an identity file. New servers using the OpenSSL FIPS encryption module will not start when using an identity file that has its private key encrypted with 3DES. You must re-encrypt the identity file using AES. To do this, run a command similar to the following using an upgraded viewcert utility:

viewcert -p -o new-file-name -op new-password -ip old-password old-file-name

The new and old passwords can be the same.

- The sample server identity file (rsaserver.id) and client identity file (rsaclient.id) have been modified so that the private keys are encrypted using AES rather than 3DES.

- Versions of the server that use the Certicom encryption module will not start when using an identity file that has its private key encrypted using AES. Trusted root certificate files specified using trusted_certificates do not need to be modified.

Self-signed certificates must now have the Certificate Signing attribute set

Self-signed certificates must now have the Certificate Signing attribute set when using the identity encryption option (for example, the -x mlsrvXX and -xs dbsrvXX options). To determine if a certificate has the Certificate Signing attribute set, use the viewcert utility and look for the Certificate Signing attribute in the Key Usage portion of the output. If your self-signed certificates do not have the Certificate Signing attribute set, then you must regenerate the certificates.

Create Certificate utility (createcert) now uses AES encryption instead of 3DES

The Create Certificate utility (createcert) now uses AES rather than 3DES encryption for encrypting the private key in the server identity file.

A new option, -3des, has been added to the Create Certificate utility. Use this option when you want to create a 3DES-encrypted server identity file that can be used by both new and old servers. Note that new servers running in FIPS mode cannot start using 3DES-encrypted certificates; however, if you are not running in FIPS mode, then you can use 3DES-encrypted certificates.

View Certificate utility (viewcert) now uses AES encryption instead of 3DES

The View Certificate utility (viewcert) now uses AES rather than 3DES encryption when you specify the -p option to PEM-encode the output and when you specify the -ip and -op options to set the password.

A new option, -3des, has been added to the View Certificate utility to allow you encrypt output and passwords using 3DES instead of AES.

Database server now loads the FIPS driver file, dbfipsXX.dll, at startup

Previously, the 32-bit Windows database server loaded the FIPS driver file, dbfipsXX.dll, only when needed. Now, the 32-bit Windows database server always attempts to load dbfipsXX.dll at startup, and keeps it loaded for the life of the server. If loading dbfipsXX.dll fails, then an error is returned only when an attempt is made to use FIPS encryption.

Deploying FIPS

If you are deploying FIPS encryption, then there are new shared libraries to deploy; these files are included in your software. The former files, sbgse2.dll and libsbgse2.so, are no longer installed by the software. The new files to deploy are:

- Windows 64-bit: libeay32.dll, ssleay32.dll, and msvcr100.dll

- Windows 32-bit: libeay32.dll, ssleay32.dll, and msvcr90.dll

- Linux: libcrypto.so and libssl.so

Note: On Windows, although 32-bit and 64-bit FIPS-certified OpenSSL libraries for encryption are provided, you must use the 64-bit libraries on a 64-bit system.

MobiLink-related changes and information

Connecting to a MobiLink server using client-side certificates now requires the Digital Signature certificate attribute to be set

TLS/SSL connections to a MobiLink server using client-side certificates now require the client-side certificate to have the Digital Signature attribute set. If the attribute is not set, then the connection will fail.

To determine if a certificate has the Digital Signature attribute set, use the View Certificate utility (viewcert) and look for the Digital Signature attribute in the Key Usage portion of the output. If your client-side certificates do not have the Digital Signature attribute set, then you must regenerate the certificates.

FIPS-based end-to-end encryption now requires the private key to be encrypted using AES

If the private key file provided to a MobiLink server by the e2ee_private_key file option of the 杧 command-line option is encoded using 3DES and you are running in FIPS mode, then the private key file needs to be regenerated with the private key encrypted using AES.

How to update a MobiLink deployment that uses non-FIPS TLS/SSL (includes HTTPS) and client-side certificates

1. If your client-side identity certificates do not have the Digital Signature attribute set and the client connects directly to the MobiLink server, then you must regenerate and deploy client-side certificates with the Digital Signature attribute set.

2. Update the server-side binaries.

3. Update the client-side binaries.

How to update a MobiLink deployment that uses FIPS, TLS/SSL (includes HTTPS) and client-side certificates

These steps update the client identity certificates twice if the Digital Signature attribute is missing from client-side identity certificates. This procedure can make the update less disruptive because synchronizations can continue without having to coordinate the client-side and server-side updates to occur at the same time.

1. If your current client-side identity certificates do not have the Digital Signature attribute set and the client connects directly to the MobiLink server, then you must regenerate and deploy client-side certificates with the Digital Signature attribute set.

2. Update the server-side binaries (remembering to include the new FIPS driver files) and deploy server identity certificates with AES-encrypted private keys.

3. Update the client-side binaries (remembering to include the new FIPS driver files) and deploy client identity certificates with AES-encrypted private keys.

How to update a MobiLink deployment that uses FIPS and end-to-end encryption

1. Regenerate the primary key file referenced by the e2ee_private_key encryption option.

2. Shut down the MobiLink server.

3. Update the MobiLink server binaries, remembering to include the new required FIPS driver files.

4. Change the e2ee_private_key option to point to the new private key file (or replace the old file), updating the e2ee_private_key_password, if required.

5. Restart the MobiLink server.

Note, connecting to and creating a MobiLink server resource in the 32-bit Windows SA Monitor that will use FIPS encryption to connect to the MobiLink server, may fail with the error, 揊ailed to load library mlcrsafips12.dll�. To work around this, you can either not use FIPS encryption, or use 64-bit SA Monitor. Similarly, connecting to a database server from 32-bit DBISQL, DBConsole, or Sybase Central using FIPS encryption, may also fail with the error, 揊ailed to load library mlcrsafips12.dll�. To work around this problems, you can either not use FIPS encryption, or use 64-bit client software.

749295 The Dispose function of SATransaction did not automatically do a rollback. This nhas now been corrected.
749387 Under certain rare circumstances the server could have become deadlocked. For this to have occurred there must be a table continually undergoing many insertions and deletions. This has been addressed.
749407 If the connection between the MobiLink Notifier and the consolidated database had been disconnected, it was possible for the MobiLink Notifier to have failed to re-connect to the consolidated database. This has now been fixed.

A work around to the issue is to restart the MobiLink Server.

749465 Previously, an Oracle JRE was shipped with the software for use by clients. Now, the SAP JRE is shipped instead.

Upgrading overwrites the JRE directory (%SQLANY16%\binXX\jre170) and its subdirectories. If you are using certificates, then your certificate store (%SQLANY16%\binXX\jre170\lib\security\cacerts) is overwritten, including your certificates. Similarly, fonts you added to the %SQLANY16%\binXX\jre170\lib\fonts\fallback directory to help display characters in the administration tools may be lost. To minimize upgrading steps with regards to the JRE change, create a backup copy of the JRE directory and all of its subdirectories before you upgrade so that you can refer to or restore files (such as cacerts) from the backup, as needed. To restore settings, use the java_vm_options option (SQL Anywhere), and/or the -sl java option (MobiLink) to optimize your Java VM startup settings.

749484 In rare cases, after a log rename on the primary, a mirror or copy node could have stopped writing and applying changes. In order for this to have occurred, all of the following conditions must have applied:

- the mirror or copy node must have been fairly recently started and requesting log pages (in the case of the mirror, not yet synchronized)

- the mirror or copy node must have been writing pages from the primary's current log file

- the primary log file was renamed

- something (such as a virus scanner) must have accessed the renamed log on the primary (or parent), preventing the primary from opening the file when the mirror or copy node requested pages from it

This has been fixed so that the primary or parent will attempt to open the renamed log several times before failing. If the file open still fails after multiple attempts, the primary will display the message "Database "<database-name>" mirroring: failure when opening log file <file-name> for remote server <server-name>" and the mirror or copy node will display the message "Database "<database-name>" mirroring: database is not compatible with primary; files must be replaced" and shut down the database.

749610 When the Interactive SQL utility was run on Japanese or Chinese Linux, the list of categories in the "Options" window was sized so narrow that the names of the categories were not displayed at all. This has now been corrected.

Note, the same sizing issue also occurred with the 揙ptions� window of the SQL Anywhere Console utility.

749622 If an archive backup was corrupt in a specific way, it was possible for the database server to crash when attempting to restore it. This has been fixed.
749628 During execution of a Validate statement the server would have taken a data lock on the primary key table of any foreign keys of the table being validated. This has been fixed.
749714 If the SET REMOTE OPTION statement had been used to store message control parameters in the database, it was possible for SQL Remote to have failed to gather the message control parameters from the database in very rare circumstances. The user would typically be prompted with a dialog box to fill in the message control parameters, and all the parameters would be blank. If the message control parameters were manually entered in the dialog, SQL Remote would succeed. This has now been fixed.
749821 This change fixes several issues with regard to property attributes in the metadata document:

- The OData Version 2 specification is unclear in the case of the max constant for the MaxLength attribute of a property. Many clients will accept both 搈ax� and 揗ax� as valid cases, but the Microsoft clients only accept 揗ax�. In OData version 4+, the spec is clear that the correct case is 搈ax�. To avoid such issues two things have been done:

1. For SQLA and ASE, the MaxLength attribute will always specify the MaxLength attribute with a number in the range 1 to 2^31-1 (to avoid the use of 搈ax� altogether).

2. It is possible for an IQ column to have a value that is larger than 2^31-1 bytes/characters, in which case we must continue to use 搈ax�. The default case will continue to be 搈ax� but the OData server administrator can override the case using the __MaxLengthMaxString option in the config file.

- The DefaultValue attribute was being used incorrectly. The Microsoft OData clients expect the DefaultValue attribute of a given type to be a valid value (as would appear in a request URL) for that type. For example, the DefaultValue for an Edm.Int32 must be an 32-bit integer. This is somewhat unclear in the version 2 OData spec but is clearly the stated behaviour in OData version 4+.

The DefaultValue attribute was being used to represent the underlying default of the database (for example, an autoincrement column would have DefaultValue=攁utoincrement�). Since the DefaultValue attribute is not appropriate for all possible default values that an underlying column in the database can have, we will no longer expose default value information in the metadata document using the DefaultValue attribute.

- ASE Money data type columns were reporting a Precision and Scale of 0.

749824 If a secure web procedure contained any of the certificate_unit, certificate_name, or certificate_company options, and one or more did not match the certificate used by the server, the connection could have hung or timed out. This has been fixed.
750008 In a multithreaded ADO.NET application, there was a possibility for process execution to hang, or for an exception to occur. Three problems were identified and corrected.
750288 If a network server was started with the LocalOnly TCP option set, and the server was running on a portable device (eg. a laptop), changes to the IP addresses on the machine would have been reflected in the server. For example, if a new IP address was added, a new listener would have been started on that IP address which could then accept connections from remote machines. This has been fixed. The LocalOnly option now disables IP address monitoring.
750296 Three new features/modifications have been introduced in the MobiLink server:

a) The setting for the ldap_failover_to_std property for a user authentication policy is extended to be 0, 1, or 2 [it originally accepts only 0 (FALSE) or 1 (TRUE)). The MobiLink server will authenticate users in the following ways, when ldap_failover_to_std is

0: The MobiLink server will authenticate the user against LDAP server only. If the user cannot be authenticated against a LDAP server, the MobiLink server will fail the sync request, regardless of the types of the errors;

1: The MobiLink server will authenticate the user using the standard script-based user authentication, if and only if the LDAP server(s) are not available. The authentication status, 6000 will be passed to the user authentication scripts, if the LDAP servers are not available;

2: The MobiLink server will authenticate the user against a LDAP server first and then authenticates the user with the standard script-based user authentication, no matter if the user is authenticated or not with the LDAP server. The MobiLink server will pass one of the following values as a user authentication status to the scripts:

1000: if the user is authenticated against the LDAP server;

4000: if the user is not authenticated against the LDAP server; or

6000: if the LDAP servers are not available.

b) User authentication using a default authentication policy:

The MobiLink server now supports user authentication against a LDAP server using a default user authentication policy. The default policy name can be specified from the new MobiLink server command option: -zup <name> "set default policy name for user authentication (implies -zu+, cannot be used with -zu-)"

When a policy name is specified on the MobiLink server command line with this new option, any new MobiLink users that aren抰 in the ml_user table will be first authenticated against the LDAP server using this default policy, and then optionally calls the user authentication scripts, if the ldap_failover_to_std property for the default policy is configured with a value of 1 or 2. If the user is fully authenticated, it will be added into the ml_user table and the same user authentication policy will then be used to authenticate this user later. This new command line option implies 杬u+ and it cannot be used with 杬u-. The MobiLink server will complain, if both 杬up and 杬u- are given on the command line.

Please note: the given default user authentication policy name must exist in the ml_user_auth_policy table , otherwise the MobiLink server will complain and refuses to start.

c) The MobiLink user password will be hashed and stored in the ml_user table in the consolidated database, if and only if the ldap_failover_to_std property is configured with a value of 1 or 2. The password will not be saved, if this property is set to 0.

750298 In very rare, timing dependent cases, a copy node with children could have hung when it was reconnecting to its parent. This has been fixed.
750363 If using FIPS, the SQL Anywhere FIPS DLL (dbfips16.dll) does not have to be in the path but the actual FIPS module DLLs (libeay32.dll, ssleay32.dll on Windows, libcrypto.so, libssl.so on Unix) do. On unix, they need to be in the LD_LIBRARY_PATH. If they were not found, the error message that results would have daid that the dbfips DLL could not be found. This has been fixed. The correct filename for the missing file will now be given, and the error message will indicate whether the file could not be found at all or if it could not be found in the path.
750493 On Linux systems, the Relay Server State Manager (rshost) process could have failed to start under the following conditions:

- the -o option was not specified, AND

- if any of the environment variables $TMPDIR, $TMP, $TEMP was defined but the directory did not exist.

Depending on how rshost was started, it could have failed silently. This has been fixed.

750502 Mirror server connections were ignoring the CommBufferSize (CBSIZE) connection parameter. This has been fixed so that CBSIZE can now be used to specify the maximum size of communication packets between mirror servers.

In addition, transferring many log pages between mirror servers may have been slower than necessary. The default maximum packet size used for connections between mirror servers has been increased, which can improve performance in some cases. 16.0.0 mirror server connections now default to a maximum packet size of 64240 bytes, and 12.0.1 mirror server connections now default to a maximum packet size of 16000 bytes.

750511 The connection between Relay Server Outbound Enabler and the backend server specified through the 朿s option no longer supports tls_type=ecc.
750513 The server could have crashed if a TDS based connection sent a cancel request and a cursor close request at the same time for the same connection. Note that the cancel request could have either been sent explicitly by the application or implicitly by the underlying driver due to a query timeout. This problem has now been fixed.
750611 When a row was inserted into a table with a UNIQUE INDEX, with a NULL value in the index key and matching an existing index key with NULLs considered equal, the error SQLE_INDEX_NOT_UNIQUE was signaled. This has been fixed.

Note that UltraLite does not support the clause 揥ITH NULLS NOT DISTINCT� for the CREATE INDEX statement. Therefore, an index key should be considered unique if it contains NULL in at least one column.

750618 UltraLite is now supported for Windows 8 store applications and Windows Phone 8 applications.

Each bottom level directory in the following tree under the SQLA install root contains a WinRT-based component (UltraLite.winmd/UltraLite.dll) that implements the UltraLite API for the noted platform.

UltraLite

+-- WinRT

|-- WindowsPhone

| +-- 8.0

| +-- arm : Windows Phone 8 devices

| +-- x86 : Windows Phone 8 emulator

+-- Windows

+-- 8.0

+-- arm : Windows RT ARM-based devices

|-- x64 : Windows 8 store apps for x64 architecture

+-- x86 : Windows 8 store apps for x86 architecture

Developing UltraLite applications using this software requires SQL Anywhere 16 and Microsoft Visual Studio 2012 or later.

Developing Windows Phone applications requires the Windows Phone SDK 8.0, which is available from:

http://dev.windowsphone.com/en-us/downloadsdk

Windows Phone SDK 8.0 requires Windows 8. Microsoft lists the complete system requirements at:

http://www.microsoft.com/en-us/download/details.aspx?id=35471

Developing Windows store applications requires the Windows SDK for Windows 8, which is available from:

http://msdn.microsoft.com/en-us/library/windows/desktop/hh852363.aspx

The UltraLite.WinRT directory under the SQLA samples root contains a Visual Studio 2012 solution for the CustDb sample that appears in various forms for other UltraLite supported platforms.

750638 If a client application had included the 揈xpect: 100-continue� header in the request and had passed this request through the Relay Server, it was possible for the client to have received multiple 揌TTP 100 Continue� responses, which would likely have caused the client to have failed the request. This has been fixed, and only a single 揌TTP 100 Continue� response will now be sent.
750691 In rare cases, appending or prepending data to the value in a compressed column could have resulted in a server hang. This has been fixed.
750713 When trying to start an evaluation edition of the MobiLink server, it would fail with the following error:

[-10382] The MobiLink Server has failed to start

This problem has now been fixed.

750915 The SABulkCopy method would have thrown an exception when using SQL Server as the data source. This has now been corrected.
750919 Opening online help (DCX) from the graphical administration tools may have failed with the error message "Web page is not accessible". This would have happened under the following conditions:

- Interactive SQL 12 was being run and the "Help" button was clicked on the "Connect" window the first time it was opened, and the network used a proxy to connect to the internet.

- Sybase Central 12 or later, or Interactive SQL 12 or later, was being run and the fast launcher was turned on, and the network used a proxy to connect to the internet.

These problems have been fixed.

750992 The server may have crashed when attempting to execute a certain class of incorrect queries if the select list contained alias names and aggregate functions. This has been fixed.
751019 When the Import and Export wizards offered a list of owners for a SQL Anywhere or IQ database, role names were consistently excluded. This has been corrected so that role names are now included..
751198 The SQL Anywhere Oracle ODBC driver now supports the following new features when the database is running on an Oracle 12.1 server and the OCI library is from the Oracle 12.1 installation:

- The maximum size of the VARCHAR2, NVARCHAR2, and RAW data types has been increased from 4,000 to 32,767 bytes

- Implicit result sets can be returned from stored procedures. However the number of implicit result sets is limited to one per stored procedure. The implicit result set will be detected automatically by the ODBC driver regardless of the setting for the 揚rocedure returns results or uses VARRAY parameters� option in the DSN used by the ODBC application

When the database is running on an Oracle 12.1 server and the OCI library is from the Oracle 12.1 installation.

751199 The MobiLink server now supports consolidated databases running on an Oracle 12.1 server. In order to use any of these Oracle 12.1 new features: 32K-byte varchar2, nvarchar2, raw data types, and implicit result sets, the build numbers of the SQLA Oracle ODBC driver must be greater than or equal to 1733 and the Oracle OCI library must be installed from the Oracle 12.1 installation image.
751207 Using SACommandBuilder.DeriveParameters with a stored procedure or function that contained long data values as input or output parameters would have reported the size as 32767 bytes. This has been fixed and will now report a size of 0 bytes (to use the maximum size of the long data value during binding) instead.
751208 An attempt to run the Extraction utility (dbxtract)on a database could have failed with a the error: 揷annot perform specified operation, number of administrators for role 'SYS_AUTH_WRITEFILE_ROLE' falls below min_role_admins option value�, if the SYS_AUTH_DBA_ROLE had been migrated. This problem has now been fixed.
751211 If there were many inserts, updates or deletes on a primary server, then checkpoints on the mirror or copy node could have been slow. In some cases, the primary's performance could be significantly impacted by slow checkpoints on the mirror. This has been fixed so that the mirror or copy node checkpoint performance has increased.
751213 If multiple connections were using secure LDAPUA simultaneously while the public.trusted_certificates_file option was being changed, the server could have crashed. This has been fixed.
751283 If dbdsn was used with the -or switch to create an Oracle DSN, dbdsn -g would not have listed the Oracle-specific parameters. This has been fixed.
751285 Some complex statements took a long time to open a cursor. For some classes, opening the cursor could not have been interrupted by cancelling the statement, nor could the server have been stopped until the open completed. One such instance has been corrected and the open will now respond properly to a cancel.
751374 Under rare circumstances, a very long line segment defined in a Round Earth SRS (for example, SRS 4326) could have crashed the server. This has been fixed.
751386 There were a number of problems with the CREATE ENCRYPTED/DECRYPTED DATABASE statements with respect to dbspace files with relative pathnames:

- If a database contained a dbspace with a relative pathname, and the server was not started in the same directory as that file, the CREATE ENCRYPTED/DECRYPTED DATABASE statements would not have been able to find the dbspace file

- In the above case, the error message would have said 揙utput file cannot be written� even though it was an input file causing the problem. The error message had no indication of which file caused the problem

- If the target filename for these statements was in a different directory, the encrypted or decrypted dbspace files would have remained in the original directory.

For example, if a database had a dbspace with the filename 揹bspace.dbs� and the following was executed:

create encrypted database 憂ew/sales.db� from 憇ales.db� key 憁yencryptionkey�

the server would have created the new dbspace.dbsE file in the same directory as dbspace.dbs, rather than in the 搉ew� subdirectory.

These problems have now been fixed.

751440 When installing SQL Anywhere on Solaris, AIX, HP-UX and Mac OS X systems, some of the 32-bit files were erroneously excluded. This meant that some 32-bit client programs or external environments may not have been able to run. There is no workaround other than to use the 64-bit equivalent of these programs. This has been fixed. The missing files will now be installed along with the SQL Anywhere Client component.
751566 The antialiasing algorithm used for SQL editors (including the SQL Anywhere auditing viewer, and the MobiLink server log file viewer) did not render certain fonts optimally. Chinese fonts on RedFlag Linux and small fonts generally were poorly drawn (or were not drawn at all). This has been fixed.
751585 If a database server attempted to send more than 16k of data over an HTTPS connection at one time, the client side of the connection could have hung. With version 16.x, this could also have happened if a TLS connection used a packet size bigger than 16000 bytes. This has been fixed.
751586 Under very rare circumstances, renaming of cloud transaction logs could have failed, causing the logs to grow indefinitely. This has been fixed.
751588 The ASP.NET provider's database configuration tool, SetupAspNet, would have failed with a syntax error message. This problem has been fixed.
751684 If a domain was dropped and re-created within a batch, and the batch also included a subsequent reference to the domain in a CREATE TABLE or ALTER TABLE statement, the old (before drop & create) domain was used for the column definitions. This has now been corrected.
751752 A secure web procedure call through a proxy server could have failed with error code -988, 揑nvalid response from the HTTP server� if the web server or proxy attempted to redirect the call with a �301 Moved Permanently� status code. This has been fixed.
751771 A user defined function with a SELECT statement containing a common table expression could have been incorrectly inlined. This has been fixed.
751847 If an HTTP connection was manually dropped (using DROP CONNECTION), and another HTTP connection was accepted at the same time, it was possible for the server to have crashed. This has been fixed.
751859 On Windows, the UltraLite runtime would have crashed when the database file grew to over 2 GB in size. On Android, a SQLE_DEVICE_ERROR (-305) was signaled when the database file grew to over 2 GB. This has been fixed so that the UltraLite database files can now grow to 4 GB as documented.
751863 The CSDL namespace URL in the metadata document was incorrectly referring to CSDL 1.0 using URL http://schemas.microsoft.com/ado/2006/04/edm. It has now been updated to refer correctly to the CSDL 2.0 namespace URL: http://schemas.microsoft.com/ado/2008/09/edm.
751936 The MobiLink Plugin now supports:

The new MobiLink Server 杬up switch. This switch can be accessed from the Advanced tab of the property sheet for a MobiLink Server Command Line. An error is reported if 杬up is set and 杬u is set to false, as this is not allowed.

For user authentication policies we now support calling the standard MobiLink authentication scripts: Never, Always or only when an LDAP server could not be found. This change affects the LDAP Servers page of the New User Authentication Policy wizard. It also affects the property sheet for user authentication policies. The setting is also shown in the right hand pane when User Authentication Policies are shown.

751937 In rare cases, a copy node could have started but never have written or applied any changes that the primary or root had made until the copy node was restarted or the connection to its parent was lost. All of the following conditions must have been met for this problem to have been possible:

- the database was backed up from the primary or root using dbbackup or the BACKUP statement

- while dbbackup was running, there must have been other connections to the primary or root that had modified the database

- between the backup and when the copy node was started on the backed up database, there was no commit done on the primary or root

If this problem was occurring, the sa_mirror_server_status row for the copy node would show the copy node was connected with a recent last_updated value, but the log_written and log_applied values would not change. If the copy node was restarted, it would start applying and writing changes. This has been fixed.

751941 If a database server received an HTTP POST request with a large payload, the server could have crashed. This has been fixed.
751948 In rare timing dependent cases, a Linux or Unix server using TLS mirroring or diagnostic connections could hang. This has been fixed.
752025 If the server was running on a Windows machine which was suspended, the server could have hung once the machine was resumed. This has been fixed.
752033 An attempt to use the Extraction utility (dbxtract) on a database running in the cloud would have failed with an invalid login_mode option error. This has been fixed.
752108 An alert email subject line was mangled for the ZH locale. This has now been corrected.
752109 The MobiLink server with an integrated Relay Server Outbound Enabler could have hung or crashed on shutdown. The has now been fixed.
752201 If a procedure was defined with the special values SQLCODE or SQLSTATE as parameters, and the procedure was used in the FROM clause of SELECT statement, it was possible that the server could have crashed. This has been fixed.
752203 If a certificate had an expiry date in the month of December, calling sa_certificate_info on that certificate could have crashed the server. This has been fixed.
752328 In very rare cases the server may have hung at shutdown. This would only have happened while disconnecting TCP/IP connections. This has been fixed.
752347 If there were multiple rows in the ml_scripts_modified MobiLink system table, the MobiLink Server would have failed to start and reported a primary key violation on the ml_scripts_modified table. This has now been fixed.

A workaround is to manually remove all but one row from ml_scripts_modified table before starting the MobiLink Server.

752428 In rare timing dependent cases, if a connection between a copy node and its parent was lost, it was possible for the new connection to have repetitively connected and disconnected. Normally this condition would have resolved itself within a minute or so, but in some cases it could have continued indefinitely. This has been fixed.

If an ALTER MIRROR SERVER statement was used to add an alternate parent to a running and connected copy node, the alternate parent would have been used until the copy node restarted. This has been fixed so the alternate parent can be used the next time the copy node loses its connection to its parent.

752610 Sybase Central could have crashed if it was running and something was done to change the Windows desktop theme. This same problem could also have been encountered when using a Remote Desktop Connection with a low-bandwidth connection; in this configuration, Remote Desktop may automatically change the desktop theme to satisfy the bandwidth limitations. This problem has now been fixed.
752612 When fetching a Date, Time, or Timestamp from the database as a string in a client, the fetch was much slower than if the data was bound to be fetched as a timestamp type or structure. This performance has been improved.

Also, when fetching a Date, Time, or Timestamp, or other types that are not native strings or numerics, from the database when the clients character set is different from the database character set, the data would have been returned in the database character set. This has been fixed so the data will returned to the client in the client's character set.

752638 SQL Remote for SQL Anywhere could have failed with the following error:

SQL statement failed: (-685) Resource governor for 'prepared statements' exceeded

when it was running in a continuous mode with the command line option 杧. This problem has now been fixed.

752641 If a server was started with one database on the command line with mirroring enabled, and then other databases were started on the server, the server could have stopped incorrectly if the mirrored database failed to start when the database was restarted. Note that mirrored databases are automatically restarted by the server if they lose quorum, as well as other cases. This has been fixed so that if the mirrored database fails to start in this case, only the mirrored database will be stopped, and the server will remain running if there are other databases running.

Also, if a server to server mirror connection failed due to a liveness timeout, no message was logged even if -z was enabled. In addition, other server to server connections contained little diagnostic information even if -z diagnostic logged was enabled. This has been fixed so that liveness timeout messages for mirror server connection are logged with or without -z. In addition, the messages "mirror server connection closed by other side" and "connection terminated abnormally; error code <number>" will be logged if -z is used and a mirror server connection is closed by the remote server or fails due to a network error.

752756 In very rare cases, the server may have crashed on currently unsupported arguments to the row constructor function. This has been fixed.
752772 Conversion of NUMERIC/DECIMAL columns to the .NET DECIMAL type has been improved.
752866 When displaying results as text, column values might have been misaligned if a column to the left contained text with full-width Asian characters. This has been fixed.
752869 In very rare timing dependent cases, if the arbiter for a running High Availability system was changed to a different arbiter server, and then changed back to the original arbiter server later, the arbiter may have contained incorrect state information. If this occurred, there was a small chance that the incorrect partner could have become the primary. This has been fixed.
752967 The server may have returned an incorrect result set for a complex query with multiple nested derived tables or views, if there was an equality predicate that could have been pushed inside the nested derived tables and the outside derived table could have been flatted. If the problem happened, the equality predicate was not executed and the result

set contains additional incorrect result rows.

For example, in the below query the predicate "v2.c = 0" can be pushed inside the derived table "v2" and derived table "v2" can be flatted. Predicate is not executed in this case.

select *

from ( select distinct *

from ( select a, sum(b) c from T1 group by a ) v1

) v2

where v2.c = 0

This has been fixed.

753080 When a column inside a row was referenced in the GROUP BY list, the column could not be found when it was referenced through the row. For example, consider the following query:

select (B.gencol1).id as gencol1 from (

select ROW(A.id) as gencol1

from Product A

group by A.id) B order by gencol1

B.gencol1 is a row with one column named id in it. (B.gencol1).id should have been able to reference to that column. In fact, it can reference it when 揼roup by A.id� is removed. However, when the GROUP BY was present, an error was returned: 揷olumn 慽d� not found in variable (B.gencol1)�. This has now been corrected.

753086 UltraLite now supports Xcode 5 and iOS 7. Version 16 includes 64-bit libraries for the new A7 (arm64) chip along with the 64-bit simulator.
753092 The MobiLink Agent for central administration of remote databases could have crashed when shut down. For the crash to have occurred, the agent must have executed a task that was conditional on the current network name on the device. This has been fixed.
753095 The MobiLink Agent for central administration of remote databases could have stored bad character data for task results. This in turn could have caused errors during synchronization with a MobiLink server. This problem would have occurred on a host with a multi-byte character set, and a task with an 揺xecute SQL script� command that returned a result set with multi-byte characters. This has been fixed.
753178 Identifiers such as namespace, entity, association, property and service operation names were not restricted in length and allowable characters, as required by the OData specification. This has been fixed.

Note, model files may still refer to Database names that are not valid OData identifiers, however they must be renamed using 揂S� clause.

753193 If a database server was running multiple databases with mirroring enabled, and one of the databases incorrectly used a primary or mirror alternate server name that was already in use by another database, connections to the other database that used the alternate server name could have failed. This has been fixed so that if one database starts using a particular alternate server name, that alternate server name will not be removed if a second database attempts to use it.
753195 Some compiler options have been changed in this build that can result in performance improvements in the SQL Anywhere server in certain situations.
753279 Execution of a DROP statement with an IF EXISTS clause for a table, view or materialized view, incorrectly returned an error if the object of the requested object type did not exist but there was an object with the same name but different object type. For example: there exists a table "Products" then a "DROP VIEW IF EXISTS Products" returns the error "Table 'Products' not found". This has been fixed.
753293 The SQL Anywhere OData producer was not properly handing JSON requests containing dates before Jan 1, 1970. This has been fixed so that these dates are now handled correctly
753296 Edm.Decimal values differed in format between EntityIDs and response bodies. This has been fixed.
753365 Typing in to the SQL field of the Spatial Viewer window could have caused an internal error if the database connection had been closed from the main DBISQL window. This has been fixed.
753386 When following skiptokens, the OData Producer could have been slower to retrieve data than optimal. This has been fixed.
753522 If a skiptoken contained nulls, it would not have been parsed properly resulting in an error like:

The value for property "{columnname}" in a key predicate is formatted incorrectly.

If paging through descending order on a column with nulls, skiptoken may have missed results or restarted at top (thus creating an infinite dataset). This has been fixed.

753615 In very rare, timing dependent cases, the server could have crashed when starting or stopping a database, failing on a "MESSAGE ... TO CLIENT FOR ALL" statement. This has been fixed.
753632 In certain cases, duplicate download rows may not have been detected by UltraLite, and rather, silently applied as if AllowDownloadDupRows were active. This has been corrected so that duplicate download rows will now signal SQLE_PRIMARY_KEY_NOT_UNIQUE errors, or SQLE_DUPLICATE_ROW_FOUND_IN_DOWNLOAD warnings (if the AllowDownloadDupRows option is specified).
753708 The REPLACE string function could have crashed on certain inputs such as:

"select replace( 'XAAAAAAAXBBBBXBBBB', 'XAAAAAAA', 'Z' )".

This has been fixed

753719 Zero-length linestrings were being treated as invalid. For example, selecting ST_Geometry::ST_GeomFromText( 'LineString( 1 1, 1 1 )' ) would have resulted in an error indicating that linestrings must have at least two points. The OGC standard does not forbid zero-length linestrings, so this geometry should be accepted. This has been fixed.
753721 The row-level update triggers and referential update actions may have incorrectly fired for unchanged columns if the UPDATE statement was executed by SQL Remote and caused an update conflict. This has been fixed.
753782 Opening the property sheet for an index on a materialized view could have crashed Sybase Central. This has been fixed.
753783 Sybase Central could not re-enable a secured feature for a version 12 database running on a version 16 server. Attempting to do so would have resulted in a 揚rocedure 'sp_use_secure_feature_key' not found� error. This has been fixed.
753866 The JRE location used in the SIS_SimpleListener sample was out of dated and may have caused the listener to fail actions requiring JRE if the search path didn抰 already cover any JRE locations. The JRE location used in the SIS_SimpleListener sample has now been brought up to date.
754211 The SQL Anywhere sample program build procedures have been updated to simplify Microsoft Visual Studio x64 platform builds. When the Visual Studio C++ tools are set to use the x64 compiler, the SQL Anywhere sample build.bat scripts will build an x64 version of the sample programs.
754294 If SetCloudArbiter was run, but it was unable to set the cloud arbiter as desired (perhaps only one of the two high availability partners was running), then the task could have been reported as succeeding and cloud tables would have reflected the change, but the change would not have actually happened. This has been fixed.
754304 In rare, timing dependent cases, a multi-threaded client application could have incorrectly received the error "Parse Error: DSN '<name>' does not exist", or possibly other connection errors. In order for this to have occurred, the process needed to be making concurrent connections and needed to use both a User DSN and a System DSN. This has been fixed.
754404 The agent action ETD file could have had missing log entries if dbcloudagentaction.exe crashed or was terminated. This has been fixed so that ETD log entries are now written to the file by dbcloudagentaction.exe immediately.
754419 The Relay Server running on an Apache webserver with hybrid MPM (event or worker), could have crashed. This issue was seen in Event (hybrid) MPM. Perfork MPM did not show this problem. This has been fixed.
754638 The Service utility for Windows (dbsvc) was treating leading @ in passwords as an intend to expand the argument via a file or environment variable. This is a consistent behavior across many SQL Anywhere command line tools. However, there is no general escape syntax for leading @ in command line arguments. Users can work around the issue by avoiding user defined elements with leading @, but is not acceptable for user accounts with established or generated passwords. A fix was made to the Service utility specifically so that it will fall back to take the entire password argument following 杙 literally if the expansion failed. This change does not apply to other tools.
754721 If a cloud partner was in the process of starting, including immediately after having being converted to a cloud partner, the UpgradeCloudInfrastructure task could have failed, and one of the cloud partners could have been disconnected after the failure upgrade. This has been fixed.
754724 Under exceptional rare circumstances, the server may have crashed when receiving a host variable value on a TDS communication based connection failed. This has been fixed.
754733 Interactive SQL could have appended a spurious character to the command line if it was passed a command file which was hidden using the File Hiding utility (dbfhide) . This has been fixed.
754832 In rare, timing dependent cases, the server could have crashed when a mirrored database was stopped or restarted. The crash was more likely (but still rare) if asyncfullpage mode was used. Note that mirrored databases can automatically restart for a number of reasons - for example after loss of quorum. This has now been fixed.
754970 In rare, timing dependent cases, the server could have hung indefinitely if it was renaming the transaction log at the same time as a DDL operation. This has been fixed.
754972 Under very rare circumstances, the server may have crashed while sending describe queries though from Java applications. This has now been corrected.
754973 If certain errors occurred during a backup, the Backup utility (dbbackup) would have reported �100% complete� before displaying the error. This has been fixed.
755077 The following query would have resulted in a polygon with points not snapped to grid:

new ST_Point( 2, 2.5 ).ST_Buffer( 1.1 )

Trying to use the resulting CurvePolygon in an operation may have caused unpredictable results. This has been fixed.

755094 The Deployment Wizard was not correctly populating the 'Environment' or 'Registry' tables in the MSI package, meaning that 慞ATH', 'SQLANY16' and 'SOFTWARE\Sybase\SQL Anywhere\16.0' were not being set inside SQL Anywhere 16 deployment MSIs. This has been fixed.
755249 When a URL query parameter contained double forward slashes, the IIS Relay Server incorrectly converted them into a single forward slash. The X-Original-Url header does correctly preserve the correct original URL and might have been used by the backend server as a workaround. This issue has been fixed.

Note, this issue doesn抰 happen on the Apache Relay Server.

755372 If the Certificate Creation utility (createcert) was used without the -3des option, a compatibility warning was displayed warning that the resulting certificate would not be compatible with older versions of the software. The build numbers shown in this message were incorrect. This has been corrected.
755388 With UltraLite for WinRT, file transfers with the stream parameter 揷ompression=zlib� would have failed, resulting in MobiLink communication error code 224. This has been fixed.
755389 A $links request could have failed when a $orderby was used that included a non-key property of the related entity type. This has been fixed.
755513 The message used to shutdown the OData server (dbosrv16) was too generic. This has now been chabged from 'shutdown' to 'shutdown_sap_sqla_odata'.

Note, older dbostop16 utilities will not be able to shutdown newer OData Server, and new dbostop16 utilities will not be able to shutdown older servers.

755522 The Quick Setup script for the Apache Relay Server would have generated a RSConfigFile directive inside <LocationMatch /srv/iarelayserver..> tag. This directive is no longer produced now.
755524 Under rare circumstances, queries using hash filters could have caused the server to crash. This was more likely in environments with a heavy load, and/or cursors held open for long periods of time. This has been fixed.
755529 Creating a certificate with an expiry date beyond 2050 would have resulted in a certificate that expired 100 years before the expected expiry date. This has been fixed.
755531 When using $format, it did not accept long forms of content-types, for example: $format=application/atom, $format=application/json, or $format=application/atom+xml. This has been fixed.
755676 In very rare, timing dependent cases, establishing a connection with a non-default maximum packet size connection parameter could have caused a loaded server to crash. The default maximum packet size for a server can be specified using the -p server option. A client application can request a different packet size using the CBSize connection parameter. Mirroring servers containing Engineering case 750502 change would also have used a non-default maximum packet size. This has now been fixed.
755767 Iif the OUTPUT statement was attempting to write a string which contained characters whose Unicode representation was greater than U+FFFF (known as "supplementary characters"), the statement would have failed with the message "Could not save result set. Input length = 1" This has been fixed.
755792 Feature request to have a command in dbisql that displays the list of reserved keywords.
755797 HTTP header names in batch requests were not case-insensitive. This would have resulted in valid HTTP headers being ignored in the parts of a batch request. This has been fixed.
755840 When initializing a cloud on Windows, checking the "Use FIPS encryption" checkbox would not have initialized the cloud for FIPS. This has been fixed.
756026 The following new features have been added to the OData Producer. Please see documentation for full details.

- The OData Producer now supports Optimistic Concurrency Control as defined by versions 2.0 of the OData Specification.

Using the OSDL model definition file (see Example 1), a developer may specify a set of properties on an Entity Type to define the concurrency token of the Entity.

- The OData Producer now supports Service Operations using HTTP GET and POST methods as specified by version 2.0 of the OData Specification.

Developers must declare explicitly what service operations to expose in an OSDL file.

- OData Producer uses less objects when caching metadata for users that have (from the OData Producer抯 perspective) identical access.

- OSDL files support added escape sequences in quoted strings

- Associations are now annotated as referential constraints in the metadata and association properties of referential constraints are now visible by default. Association may also have OnDelete attributes in the metadata which documents how the dependent entity instance is affected when the associated principal entity instances is delete.

- The log generated by OData Producers has been enhanced to identify the producer and request associated with each log event.

- OData server supports multiple producers

dbosrv16 can now host multiple producers, each connecting to a different database. All producers share the same options configuration file and are hosted on the same port. The producer configuration file syntax has been augmented for this feature.

- The OData producer now supports a greater subset of the OData Service Definition Language (OSDL).

The new supported syntax adds the ability to:

- Explicitly set the name of tables that are exposed through the producer

- Explicitly include/exclude columns

- Define entity sets with generated keys

- Define associations between entities, including complex associations that use an underlying association table

- Define navigation properties

756028 Under rare circumstances, a server that was performing request level logging could have crashed when executing stored procedure code. This has been fixed.
756032 If two subscribed publication articles contain two of the same tables and both contained the same list of columns, when adding a synchronization subscription to the second publication the database server would have erroneously reported the error:

SQLCODE -1325: Column subset for table '%1' in publication '%2' does not match that specified in publication '%3'

This has been fixed.

756038 If an OData server was shutdown and immediately restarted, it could have failed to connect to its port or shutdown port. This has been fixed.
756118 The server may have incorrectly returned the non-fatal assertion error 106104 "Field unexpected during compilation" for an IN list predicate, if the IN list contained expressions with column references for which the value was unknown at open time. This has been fixed.
756129 Queries comparing a timestamp with time zone column to a string literal could have returned incorrect results. This has been fixed.
756266 When running a cloud based on SAODE SP3, and when using SQL Anywhere version 12 to run the Primary server, the Cloud would have failed to see any software updates. It would also have failed to synchronize usage information. This has been fixed.
756394 Under exceptional rare circumstances, the server may have crashed when trying to reuse a cached query plan if tables used in the query were dropped and recreated. This has been fixed.
756565 Parameters of the function substringof() were used in the wrong order, and has now been corrected. The intended meaning of substringof( s1, s2 ) was 搑eturn whether or not s1 is a substring of s2�. The OData server was doing the opposite, 搑eturn whether or not s2 is a substring of s1�.
756681 In rare cases, the server could have returned an error like:

"Table '_^_^_22072007_^_^_759_^_^_22072007_^_^_' not found"

for an internal temporary table if an INSERT, UPDATE, or DELETE statement triggered the change of an immediate materialized view. The problem only happened when the very first INSERT, UPDATE, or DELETE of the table in a connection was executed in a nested block, for example a trigger or procedure. In this case subsequent DML operations on the

table may then have returned the above error. This has been fixed.

756707 Sybase Central could have crashed if it was running and something was done to change the Windows desktop theme. This same problem could have been encountered when using a Remote Desktop Connection with a low-bandwidth connection; in that configuration, Remote Desktop may automatically change the desktop theme to satisfy the bandwidth limitations.

This issue was partially fixed by the changes for Engineering case 752610, but this change goes beyond it by fixing the following problems as well:

- On the Search panel, the "Search" button enabling logic and the button's clicking logic would stop working after the look-and-feel changed.

- Sybase Central could have crashed if any of the following panels/windows were open when the look and feel were closed:

1. "Results" on the "Search" pane

2. The list of plug-in in the "Sybase Central Plug-ins" window.

3. The connection profiles window

4. The About window

5. The Disconnect window

- The background color of items in details panels would have been painted gray (rather than white) after switching look-and-feel.

- Drop-down toolbar buttons (e.g. "Tools") did not draw their arrow, and did not open when clicked.

756745 Simulating the time in between synchronizations when replaying a persistent connection could have caused the synchronization to timeout. This has been fixed.
756777 In rare cases, the server may have crashed when executing an invalid plan that contained an equi-join to a correlated subquery. This has been fixed.
756786 In the Console utility (dbconsole), if the Connections panel was configured to show the last reported statement, and the statement was longer than 255 characters, a "Right truncation of string data" error would have been reported. This has been fixed.
756801 The builtin SQL functions HTTP_BODY, HTTP_HEADER and HTTP_RESPONSE_HEADER were returning an empty string when the required value did not exist, instead of NULL as documented. This has been corrected so that they now return NULL when the required value does not exist. As well, the builtin function HTTP_RESPONSE_HEADER has been corrected to recognize the special header name 慇HttpStatus� and return the status code if given 慇HttpStatus�.
756878 Improperly encoded URIs could have caused an internal server error. For example, executing the query "http://localhost:8105/odata/Filter03/T6?$filter=c1 eq '%'" against the OData producer, would have caused the following internal server error:

HTTP ERROR: 500

Problem accessing /odata/Filter03/T6. Reason: while trying to invoke the method

com.sybase.odata.producer.util.RequestWrapper.getParameterMap() of a null object

loaded from field com.sybase.odata.producer.handler.AbstractHandler.request of an

object loaded from local variable 'this'

This has been fixed. Clients will now get

HTTP ERROR: 400 Bad Request

<?xml version="1.0" encoding="utf-8"?>

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">

<code>30175</code>

<message xml:lang="en-US">An error occured while parsing the request URI at offset 59.</message>

</error>

756886 Mirroring servers now log more detailed information to the console log in the following cases:

- when failover occurs and the mirror server takes over as the primary "Now running as primary server" is now logged. Previously, "Database <name> (<file>) started at <date/time>" was logged, which was incorrect because the database was already started and was not restarted.

- if the mirror server was behind applying operations and caused the primary to block for more than 10 seconds, "primary blocked for <number> seconds waiting for the mirror to catch up" is logged.

- transaction log start and current offsets are now displayed when starting up a database and at other transitions (such as when the transaction log is restarted).

- if there was an unexpected error that caused applying the transaction log to fail, a message is displayed and the database is not automatically restarted

756960 If starting a database on a server with the �-udf abort� option failed due to an assertion failure, trying to start another database with the same name would have returned a "database name is not unique" error. This has been fixed.
757009 When the server executed an ALTER TABLE statement, or loaded the table definition of a table with a unique index (primary key, table/column unique constraint or unique index) it did not derive the unique property to non-unique declared indexes that were defined on a superset of the columns of a unique index.

For example: If a table has a primary key on columns (col1, col2) and there is another index on columns (col2, col3, col1) then this other index is unique as well.

The optimizer relies very much on this unique property of an index for cardinality estimation. So the server may have used an non-optimal plan if above conditions were true. This has now been fixed.

757144 Under rare circumstances, load calculations on a cloud server could have looped with an error: 搗alue outside of range for destination�. Restarting the server would then eliminate the error. This has been fixed.
757146 Under rare circumstances, the server could have crash when executing an ALTER MATERIALIZED VIEW � IMMEDIATE REFRESH statement. This has been fixed.
757264 In timing dependent cases, a mirror or copy node could have crashed while shutting down due to an error detected while applying the transaction log - such as a transaction log mismatch. This crash could have only occurred after the databases were shut down and communications completed. This has been fixed.
757265 The Outbound Enabler may have crashed on startup while creating an HTTPS up-channel and down-channel at the same time before using them. This has been fixed.
757273 Long-form formats like application/json were not supported with the $format query option. This has been corected by adding support for the following long-form constants:

application/xml

application/atom+xml

application/json

*/*

757274 The system procedure sp_parse_json() would have failed to parse escaped character sequences in strings. In particular, it would not have parsed \� (escape double quote), nor any escaped character near the end of the string.

For example, this statement would not have handled the \� sequences and would have generated an error:

call sp_parse_json( 憁yvar�, 慬{s:攖his is \攓uoted text\�.攠]� );

This has been fixed.

757282 The Outbound Enabler was taking longer than necessary to shut down. This has been fixed by removing unneeded operations and to tune for a faster shutdown response.
757492 When a multibyte character string with a truncated last character was unloaded, the last two bytes of a character may be added to the end of the string as ASCII characters. This has been fixed.
757516 Calling the ODBC function SQLBulkOperations() with SQL_ADD could have failed to insert rows without returning an error if the number of rows multiplied by the number of columns was more than 65535. This has been fixed.
757529 A security issue with the Unload utility (dbunload) has been corrected.
757696 In some cases, an updated row in a table marked as 搒ynchronize all� would have been uploaded as an UPDATE with a pre and post image, rather than an INSERT, which is what all rows in such a table are expected to be uploaded as. Also, if there was an uncommitted update on a row in that type of table, it wouldn抰 be uploaded at all. These bugs have been fixed.
757937 Attempting to save the SQL for an event that contained whitespace before the BEGIN keyword would have resulted in a syntax error. This has been fixed.
757959 Under exceptionally rare circumstances, the server may have returned too many rows from a parallel hash semi-join if the build site is the preserved table. This has been fixed.
758063 When the system procedure sa_server_messages() was called from services, in such a way that it returned an empty result set, it could have put the server in a state where further concurrent calls to sa_server_messages() could have caused a server crash. This has been fixed.
758073 The Visual Studio 2010 compiler could have crashed when generating Entity Data Models. This has now been fixed.
758327 When the PHP external environment on Windows was used during an HTTP request (with thread-safe PHP), the PHP process may have crashed or behaved incorrectly. This has been fixed.
758332 For certain geometries, ST_Buffer may report a ring not closed error. This has been fixed.
758422 When starting the database server with a minimum multiprogramming level (command line option "-gnl <value>") that was higher than the default maximum, the database server would not have adjusted the maximum setting. The number of threads would never have gone higher than the maximum. This has been fixed. If the minimum (-gnl) value exceeds the maximum value, then the maximum and initial MultiProgrammingLevel settings will be readjusted to this minimum.
758543 The server could have become deadlocked when attempting to drop a user with a table in-use. This has been fixed.
758564 LineStrings in Round Earth SRSs could have been represented incorrectly. This could have happened for LineStrings with segments crossing equator from South to North. Additionally, under very rare circumstances, such LineStrings could have caused a stack overflow exception. This has been fixed.

In the existing databases, LineStrings that cross equator from South to North and are stored in a Round Earth SRS (for example, 4326) should be reloaded in order to be stored in the correct representation.

758580 When a reusable plan for a statement in a stored procedure was executed from the plan cache, in certain cases the reused plan failed to obtain schema locks on all of the tables occurring in the statement. As a result, another connection was not blocked from performing concurrent DDL on a table in use by the cached plan. This scenario could have caused data corruption that could lead to a non-recoverable database. This has been fixed.
758811 In rare, timing dependent cases, if a connection was running a procedure and a DDL operation occurred, the server could have crashed. In order for the crash to have occurred, the procedure needed to have a statement that referenced a view or multiple tables. This has been fixed.

In rare, timing dependent cases, if multiple connections were running the same procedure concurrently and a DDL operation occurred, the server could have hung. In order for the hang to have occurred, the procedure needed to have had multiple statements that referenced the same view. This has also been fixed.

758812 The property sheet for a table column would not have allowed changing the column抯 揅ompress values� or 揗aintain BLOB indexes for large values� settings if the column抯 type was a domain, even if the domain抯 base type supported these settings. This has been fixed.
758899 Spatial operations may, in rare cases, have crashed the server. This has been fixed.
758922 SQL Anywhere, on-demand edition now supports a new AddCloudSoftwareUpdateFromFile task. The new task adds cloud software to the cloud, given a cloud software update package file local to the Partner server. If your cloud is running in High Availability mode when adding the cloud software, the update package file should be copied to both Partners before running the AddCloudSoftwareUpdateFromFile task."
758927 When adding a new host to a SQL Anywhere, on-demand edition SP4 Cloud, if cloud software older than SP4 was specified for the host, it would have failed with an error like:

"File or directory /opt/saondemand100/data/staging/SD-z6b9/Bin64/libeay32.dll not found"

This has been fixed.

759114 Attempting to fetch the date 0000-01-00 as either a java.sql.Timestamp or java.sql.Date using the SQL Anywhere JDBC Driver would have resulted in the wrong value being returned and all subsequent timestamp values being incorrect. This date is not representable within Java, hence the value now returned will be 0001-01-01 and all subsequent timestamp values will now be correct.

Note that this change is most significant when querying the mv_known_stale_at column from SYS.SYSVIEW since 0000-01-00 represents a materialized view that is either fresh or in an unknown state. The value will now be returned as 0001-01-01 instead.

759129 If a Java stored procedure was defined such that the number of OUT parameters in the stored procedure definition was not equal to the number of OUT parameters in the Java signature, then the server would have returned an ArrayOutOfBounds exception when the procedure was called. This problem was introduced by the fixes for Engineering case 691193, and has now been fixed.
759139 The "custom" source control option -- the one in which a command line is entered to check in / check out / etc. -- was broken. Attempting to enable it resulted in an error message "Interactive SQL could not load the interface library for your source control system." This has now been fixed.
759209 The server may have loaded too large a value, and NaN/INF values, into DOUBLE, FLOAT and REAL columns by LOAD TABLE and OPENSTRING. This has been fixed. The server will now generate an error for these values.
759243 In some situations, it was possible for an HTTPS synchronization to fail, though no actual stream error code would have been reported. This has been fixed.
759373 In the Views folder, clicking the 揕ast Refresh Time� or 揔nown Stale Time� column headings to sort the views by one of these columns would have produced incorrect results. This has been fixed.
759431 The search condition "<expression> IS [ NOT ] ( type-name, ... )" may have incorrectly evaluated to FALSE, or have caused a server crash. This has been fixed.
759461 It was possible for the Relay Server to have incorrectly reported fatal error RSF13011 (Failed allocating shared memory block for client traffic statistic collector of backend server 'XXX' in backend farm 'YYY'). After this fatal error, the Relay Server would no longer have communicated with backend server 慩XX� in backend farm 'YYY' until the Relay Server Host Manager was restarted. While there continue to be legitimate reasons for the RSF13011 error to be reported, the problem that would have led to the incorrect reporting of the RSF13011 error has now been fixed.
759525 If a web procedure URL was badly formed, the server could have crashed when the procedure was called. This has been fixed.
759618 A failed ALTER TABLE statement could have corrupted the database. For corruption to occur, the table being altered must have contained no data, but must have contained some at some point. The error most likely involved was 揷olumn not found�. Assertion failures possible included 201135 (page freed twice), 201503 (Record X not present on page Y), 200106 (attempting to add row twice), 200131 (Invalid page found in index), 106200 (Unable to undo index changes during rollback), 100700 (Unable to find table definition X for record referenced in rollback log), or 101422 (Attempt to write an invalid page).

This has been fixed.

759714 The "Download" link has been removed from the "Cloud Software" panel for the Cloud.

References to the Usage Server have been removed. The following hyperlinks have been removed from the Cloud's "Overview" page: "Activate the cloud", "Refresh activation state", "Send usage information", "Log in to Usage Server".

On the Cloud overview page, the "Licensing" properties are now displayed all the time. Previously, they appeared only after the cloud was activated. The "Licensing" section now includes two new links: "Add Licenses" and "Remove Licenses" for managing cloud licenses.

759830 An application using the ADO.Net Manager Provider could have failed with the error 揢nable to load DLL 慸bdata16.dll挃 when calling SAConnectionStringBuilder.ToString. Ths has now been corrected.
760022 If auditing was on and the database contained events that were executed, the output from dbtran -g could have contained lines like the following:

--CONNECT-1025-0000952657-failure-2014-03-18 09:36

indicating a possible connection failure. This has been fixed. These lines do not indicate a connection failure. They can be safely ignored and will not show up in transaction logs created with fixed servers.

760057 Some LDAP servers allowed a zero length password to unexpectedly allow a user to

successfully authenticate. This has been corrected.

760128 In certain cases, a user that had the appropriate system privilege to create a procedure, function, view, trigger, or sequence, but did not have the appropriate privilege to alter it, was still able to alter the object. This has been fixed.
760144 When performing an absolute or relative fetch, the SELECT list expressions for rows that are not returned were evaluated. These were not strictly needed and if they contained expensive operations such as UDFs this could have been slower than necessary. If the Row_counts option was TRUE and the query optimizer could not accurately estimate the number of rows to be returned, the server simulates an ABSOLUTE fetch to position 1000000000 in order to count the rows. Before this change, all select list expressions were evaluated for these rows.

These unneeded evaluations are now skipped. A change in behaviour is that side effects and errors are no longer observed in some cases. There may still be more executions than client fetches due to factors such as prefetching.

760153 Creating a Deployment Wizard installation which included the Interactive SQL utility, the MobiLink Profiler or the Console utility, but not Sybase Central, would have failed to include JComponents1600.jar. This has been fixed.
760165 The SetBytes methods of the ResultSet and Table classes would have truncated the byte array argument if the array was larger than 32 KB. This has been fixed.

The same incorrect behaviour would also have occurred with the SetString method of ResultSet and Table, and with the SetParameterBytes method of PreparedStatement. These cases have also been fixed.

760339 A number of issues related to the "Save as ODBC Data Source" dialog when running 64-bit software on 64-bit Windows, have been corrected:

-- The dialog appeared to give the option of creating both 32 and 64-bit versions of a user data source. This option applies only to creating system DSNs, and is now disabled.

-- When trying to create both a 32 and 64 bit system DSN, but the 32-bit could not be created, the error message was irrelevant. This has been fixed; the error message now says why the data source could not be created.

-- Data sources could be created with non-canonical forms of the connection parameter names. This would have prevented the Data Source utility (dbdsn) from listing the data source completely. This has been fixed.

-- Creating a system data source could have caused up to three elevation prompts if a 32-bit data source was also created. Now, there is at most one prompt.

-- The dialog allowed creation of a user data source, even if there was already a system data source of the same name. Similarly, it allowed creation of a system data source with the same name as an existing user data source. This was very poor practice and could have lead to unexpected results if a user didn't realize that user data sources take precedence, and so the practice is now simply disallowed.

760362 If the SQL Anywhere ODBC driver, or the Sybase IQ ODBC driver version 15.x or later, was used to connect to a database with the database option 'quoted_identifier' set to 'off', or to a database on a 9.0.2 or earlier server, the ODBC driver would have failed to establish some properties of the DBMS.

When quoted_identifier was 'off':

1. For a Sybase IQ DBMS, the driver would have reported [SQL Anywhere] in messages rather than [Sybase IQ].

2. For a Sybase IQ DBMS, the driver would have reported "SQL Anywhere" instead of "Sybase IQ" for SQLGetInfo(SQL_DBMS_NAME).

3. For a Sybase IQ DBMS, the driver would not have used the "SYS.SYSIQVINDEX" table for SQLStatistics, but would have used "SYS.SYSINDEX" instead.

4. For a Sybase IQ DBMS, the ODBC driver will report the wrong server version number (e.g., 12.0.1 rather than 15.4) for SQLGetInfo(SQL_DBMS_VER).

In addition, when quoted_identifier was 'off' or the server was version 9.0.2 or earlier:

5. The ODBC driver would not have known the correct CHARSET setting.

6. The ODBC driver may have had the wrong setting for the case sensitivity of the database and may have affected SQLGetTypeInfo and other schema query functions.

7. The ODBC driver may have had the wrong setting for the odbc_distinguish_char_and_varchar option.

8. The ODBC driver may have had the wrong setting for the odbc_describe_binary_as_varbinary option.

Other than these issues, there are no other known side-effects.

This problem has been fixed.

760526 Under rare circumstances, the server could have crashed when checking whether a stored procedure could be in-lined. This has been fixed.
760644 When using the OData Producer as a servlet in a webserver, the paths were relative to a current directory, which was unpredictable by the servlet. This has been fixed. The OData Producer will now search the servlet抯 context first, then the current directory. For security reasons, the producer configuration and model files should be located in the WEB-INF/ directory (or equivalent). This context may now include .WAR files.

For OData Producers deployed using the OData Server utility (dbosrv16), paths are relative to the current directory when the server was launched.

760873 Named parameter lookup performed poorly. The GetInputParameterValues method has now been rewritten to improve the speed of named parameter lookup.
760874 If the system procedure sa_server_option() was used to change the 'IdleTimeout' or 'LivenessTimeout' option values to less than 0 or more than 32767, connections may have been incorrectly dropped. This has been corrected so that an error is now given if a value less than 0 or more than 32767 is specified for these options. In both cases, a value of 0 means there is no timeout.
761039 Under exceptionally rare circumstances, the server may have crashed when executing UPDATE or DELETE statements that bypass the optimizer if the number of columns of the table was evenly divisible by 32, and all the column values were needed in the statement and an index had been chosen. This has been fixed.
761107 The server may have returned an incorrect result set if an OrderedGroupBy strategy used an index and the GroupBy query block contained an outer reference after the query rewrite. This has been fixed.
761197 The database server may have crashed if any one dbspace file reached the maximum size of 0x10000000 pages. If a single dbspace needs more space and cannot be split into multiple dbspaces, a larger page size is required. For example, the dbspace size limit for a 2K page size is 512GB while a 4K page size may create dbspaces up to 1TB in size.

When a single file gets too big, the server will now detect this situation, version 11 and 12 servers will display a failed assertion message and shut down. Version 16 and later servers will display a failed assertion message and shut down only the affected database.

761217 The OData Producer did not properly parse odata batch request boundaries from the Content-Type header field. In particular, a content type of the form:

Content-Type: multipart/mixed; boundary=batch_e30b82d3-3d8a-430d-b66f-9fec1df8ae19; charset=utf-8

would have resulted in a 404 error. This has been fixed.

761500 The system procedure sa_recompile_views may have returned an unexpected error if it was executed outside the reload.sql script with non-standard settings for the database options quoted_identifiers and ansi_close_cursors_on_rollback. This has been fixed.
761569 Version 12 UltraLite now supports 64-bit architectures for iOS (arm64 and x86_64).
761652 In rare cases the server may have returned SQLCODE -150 or failed assertion 106104 when optimizing an aggregation query that qualified for optimizer bypass. This could have occurred when the aggregate function was within the left-hand side of a dot-notation function expression (primarily occurring within spatial queries), such as ST_Geometry::ST_EnvelopeAggr(column).ST_AsWKB(). This has been fixed.
761748 If the transaction log was renamed while the MobiLink client (dbmlsync) was performing a sync operation, and no transactions were in progress, the SQL Anywhere server would have generated the new log in a way that would have caused dbmlsync to send downloaded rows for upload. This problem has been fixed
761750 User who have permission to access stored procedures or database functions through roles, may not have access to the corresponding service operations in OData. The affected operations would not have appeared in the metadata, and the user would have received 404 errors trying to invoke them. This has been fixed.

As a work around, database administrators should directly grant execute permission on given stored procedures or functions to the affected users.

761751 The OpenSSL vulnerability known as Heartbleed impacted some components of SQL Anywhere software as follows:

- SQL Anywhere Server when using TLS (Transport Layer Security) communications and/or HTTPS web services, though only to the networks that can access the server. Calling external web services over HTTPS from the database server were also affected.

- MobiLink Server when using TLS and/or HTTPS communications, though only to the networks that can access the MobiLink server.

- Relay Server Outbound Enabler

Affected Versions (note that all platforms were impacted by the vulnerability):

- SQL Anywhere 12.0.1 builds 3994-4098

- SQL Anywhere 16.0 builds 1690-1880

This vulnerability has been resolved by replacing the OpenSSL libraries with corrected versions. Once this SP has been applied, regenerate any certificates that were being used, and then change any passwords/keys associated with SQLA web service calls or TLS authentication.

761933 In rare cases, the server may have crashed while parsing an incorrect IN search condition. This has been fixed.
761990 If the cardinality estimate of the left hand side of a JOIN EXISTS was less than 1, a NestedLoopsSemijoin (JNLS) would always have be chosen based on cost. This could have led to poor performance in some cases. A more robust optimization has now been implemented.
762038 When reviewing recommendations from a tracing session, and the database had been shut down, a java.lang.IndexOutOfBoundsException could have occurred. This has been fixed.
762046 The SQL Anywhere Plug-in tooltip for the Connect window had its text truncated. This has been fixed.
762171 When hovering between column headings in the right pane, the cursor may not have been drawn as a resize cursor. This has been fixed.
762254 If an application made a standard connection to the server, and a second connection through the dbtools interface (for example, by calling the DBUnload function), and both connections used TLS with FIPS, the application could have crashed. This has been fixed.
762317 If a computer supported IPv6, but had IPv4 disabled, the database server would have failed to start if TCP/IP or HTTP were being used. In addition, a SQL Anywhere client application running on such a machine could have failed to find servers using TCP/IP. These problems have now been fixed.
762531 The Create Procedure wizard would have crashed when creating a procedure for a Java external environment. This has been fixed.
762532 The Overview page did not show the arbiter and mirror server names. This has been corrected.
762535 The Interactive SQL utility would have crashed if given a SQL file on the command line that did not exist and if the "on error" option was "continue" or "notify_continue". This has been fixed.
762605 The "Find/Replace" window for the syntax highlighting editor could have hung when searching up for a whole word if the search text appeared in the editor, but not as a separate word, and if the caret position was initially after the search text. This has been fixed.

This prolem also affects the Interactive SQL utility. It has been present since version 9.0.2, possibly earlier.

762606 In the DBMirror sample that is included with the SQL Anywhere software, the mirror setup SQL script contained a typographical error so no mirror partner was established. The "mirror" partner merely acted as a copy node. Attempts to connect to the mirror partner would have failed. This problem has been corrected.
762615 When communications occurred between the Outbound Enabler and the backend server with the command line option -cs containing https=1, the Outbound Enabler may have crashed or reported OEE1048 with missing detail.

For example:

OEE1048: The communication between the Outbound Enabler and the backend server failed with [MLC24: ???] while performing secured write. sidx=0 socket=01028188 sfp=58f2ed03

A workaround to diagnose the communication error in the case where the RSOE didn抰 crash is to look at the Relay Server log as the detail is sent there and reported as an OEE1048 embedded in RSE4015 with details.

The crash has been fixed and the details in RSOE log have been restored. An example after the fix:

OEE1048: The communication between the Outbound Enabler and the backend server failed with [MLC24: Server certificate not trusted. The system-specific error code is 336134278 (hex 14090086).] while performing secured write. sidx=0 socket=01028188 sfp=58f2ed03

762616 Under very rare circumstances, executing a query with a cached parallel plan could have crashed the server. This has been fixed.
762676 Importing from a CSV file which contained unquoted values could have failed if the values contained apostrophes or quotation marks in the middle of the value. This has been fixed.
762683 Importing data from a text file into a SAP HANA database could have failed with the message "Could not create table ... incorrect syntax near "long" ..." This problem would have occurred when importing character data into a new table. This has been fixed.
762695 If an attempt to cache a plan for a procedure statement caused execution of a poor quality reusable plan, this behavior would repeat with a fixed period of executions. This has been fixed.
762775 When connected to an ASE server using the "Generic ODBC Database" option in the "Connect" window, the Interactive SQL title was empty. Now, the text contains the server name, database name, login id and user id (if known). This was the same behavior as version 12, before this bug was introduced.
762786 When the RSOE used -cs https=1 and a client had disconnected before receiving all response bytes from the backend server, subsequent communications with the backend server may have suffered from false OEE1048(MLC53) SSL handshake errors. This has been fixed.

The RSOE may also have suffered false OEE1048(MLC8) SSL read errors when -cs https=1 was used. This has also been fixed.

762797 The text completer could have crashed when opened in an incomplete or poorly-formed SELECT...FROM clause. This has been fixed.
762878 If a CREATE OR REPLACE PROCEDURE/FUNCTION statement was executed on the primary server, and user connections needed to be dropped to apply this statement on a mirror/copy node, the procedure or function was not replaced on the mirror/copy node and no error was reported. This has been fixed.

Note that CREATE PROCEDURE/FUNCTION and ALTER PROCEDURE/FUNCTION statements were not affected.

762941 Numeric data from columns with a FLOAT(precision) type used in a remote database might not have been uploaded into a HANA consolidated database correctly when the Precision was less than 25 and the HANA server revision number was greater than 66. This problem has now been fixed.

A workaround for this problem is to start the MobiLink server with the hidden option,

-hwg-

762942 The Interactive SQL utility (dbisql) could have crashed if the text completer was opened in poorly formed SQL. In order to crash, the caret would have to follow an unmatched quotation mark. This has been fixed.
763011 JSON attributes 乬id乭, 乬uri乭 and 乬__next乭, XML 乬id乭 elements, and XML attributes such as xml:base and href, would not have been encoded properly if they contained non-ASCII characters or ASCII characters that had special meaning in URLs. For example if an entity instance had a string key value of "A#1" and the entity set was called "Orders�" the "#" and "�" would not be properly encoded. While IDs are now properly encoded, titles and names are not. This has been fixed. All hyper link attributes are now encoded to use % escape sequences so they can be used as-is in HTTP requests.
763021 A dbtools sample was expected to perform a backup of the Demo database as a way to demonstrate how to load and use the dbtools dynamic library. On Mac OS X, the dbtools sample would have failed to load the dbtools dynamic library, so it would return to the shell without performing the backup or producing any output. This has been fixed.
763031 In very rare, timing dependent cases, starting a server with a mirrored database could have failed with the server failing assertion 101426. This has been fixed.
763149 If the Interactive SQL utility (dbisql) had been launched from Sybase Central to debug a stored procedure, and then closed while at a breakpoint, dbisql would have crashed. This has been fixed.
763156 An unlikely security vulnerability in the server has been fixed.
763231 If a certificate did not exist in the database, executing the statement DROP CERTIFICATE IF EXISTS <name> would have raised a 揷ertificate not found� error (i.e. the 搃f exists� was ignored). This has been fixed.
763241 In rare cases, the database server may have crashed while request level logging was turned on. This has been fixed.
763414 The number of messages that could be displayed in the Interactive SQL utility's Messages panel was limited to 1000. This fixed limit has been removed.
763523 In UltraLiteJ, methods accessing uniqueidentifier values could have had an incorrect byte order. This has been fixed.
763545 SET MIRROR OPTION auto_failover = 'On' was incorrectly being treated as 'Off'. As a workaround, SET MIRROR OPTION auto_failover = 'Yes' can be used. This has been fixed so that both 'On' and 'Yes' are now supported.
763548 OData requests to update a single nullable property could not have updated the property to null. This has been fixed.
763621 If a web service of type 慗SON� returned a floating-point number between -1 and 1, it would not have included a leading zero (eg. It would be returned �.5� rather than �0.5�). The JSON standard requires the leading zero. This has been corrected.
763708 The OData Producer would have rejected a configuration file that had multiple producers when it mistakenly thought the service roots were duplicates or subpaths of each other (for example, /a and /ab). This has been fixed.
763803 Loading the following polygon:

POLYGON((-1 -1, -1 1, 0 0, 1 1, 1 -1, -1 -1))

would have resulted in an invalid polygon error. This has been fixed. There is no known workaround.

763804 Differing case for Edm.Guid values in the request URL and request body could have caused an UPDATE to fail with an error message that the entity key cannot be modified. This has been fixed.
763851 Fetching the ServerNodeAddress connection property may have returned incorrect values for HTTP connections. For example, it may have returned an empty string for remote connections, or it may have returned a valid IP address for a local connection. This has been fixed.
763854 Many clients, including .NET, would not have specified the charset on the content type HTTP request header and would assume that the default for JSON and XML requests was UTF-8. The OData Producer always assumed that HTTP requests were ISO-8859-1 based on RFC 2616. This would have resulted in non-ASCII characters being incorrectly read. This has been fixed. The OData Producer now assumes UTF-8 for JSON and XML requests and ISO-8859-1 for plain text requests.
763863 Running the Relay Server IIS 7.0 quick setup script on a system without a preexisting IIS installation, and then accessing SimpleTestApp.htm through IIS which was installed by the quick setup script would have resulted in a 404.4 response. The problem was that the StaticFileModule required for the demo was not installed. This has been fixed and the message associated with the install step has been extended to explain that the installation is neither minimal nor full and users are encouraged to customize the list of features to fit their actual web server needs.
763864 Most Relay Server customers are not SQL Anywhere customers, but the Relay Server quick setup script was setting up services with a default 揝QL Anywhere� prefix in the service name. This change overrides the default prefix to now be 揜elay Server� instead in the IIS6 and IIS7/8 quick setup scripts.
763866 The odbc.h header file that was used to compile ODBC applications could have provided an inconsistent definition of HWND and SQLHWND for 64-bit Windows and other 64-bit platforms. For 64-bit compilers, the type might resolve to a 32-bit integer which is incorrect. Window handles, like other handles, should always be 64-bit pointer-type objects for a 64-bit executable. This problem has been fixed.
763867 The SQLErrorW, SQLDataSourcesW, and SQLGetDescRecW functions were incorrectly returning a byte count, rather than a character count. For example, the column name "ABC" has a character count of 3, but the wide character (Unicode) string "ABC" occupies 6 bytes. The byte count (6 in this example) was returned. This has been corrected.

This problem could have also impacted the values returned by SQLError, SQLDataSources, and SQLGetDescRec if the driver manager called their "wide" equivalents. This problem is also corrected.

In addition, SQLGetDescRec could return a random field name for a descriptor when there was no field name (for example, a bookmark column has no field name). There was also the extremely rare possibility of a segment violation fault. These problems have been corrected.

763964 The text "SAP Sybase IQ" was incorrectly displayed in the Categories list on the Options window. This has been corrected so that the text "SAP IQ" is now displayed.
764027 When doing a ping operation using the MobiLink client (dbmlsync), the MobiLink server would have reported the following error:

[-10410] The client failed to send a complete sequence of commands

Ping request failed

Other than the error message, the ping operation would have behaved correctly. This has been fixed so that the warning is now prevented from being issued.

764049 An application using node.js would have crashed when the server returned NULL values. This has been fixed in version 1.0.1 of the driver, and the updated node module has been published to the node package manager (https://www.npmjs.org/package/sqlanywhere) and GitHub.
764052 Filter expressions using startswith(s1,s2) would have translated to a LOCATE() SQL function call, which does not result in the SQL Anywhere optimizer using indexes. This has been improved so that if the search string is a literal or parenthesized literal, whose length is less than 126, LIKE will now be used If the searched item is a column reference, a LIKE hint will be provided.
764055 Operations that compute expressions with string or NUMERIC types now have slightly improved performance.
764062 On servers where the number of connections executing at a lower priority level exceeded the number of connections executing at a higher priority level, more CPU cycles would have been given to the lower priority tasks. This has been fixed.
764064 If a CLR stored procedure attempted to create an SAConnection using the connection string from the SAServerSideConnection object; the server and CLR External Environment would both have crashed. For example, if calling a CLR stored procedure resulted in code similar to the following being executed on the CLR External Environment side:

SAConnection local_conn = new SAConnection( SAServerSideConnection.Connection.ConnectionString );

Local_conn.Open()

then both the SQL Anywhere Server and the corresponding CLR External Environment would crash. This problem has now been fixed.

764130 Some additional fixes were required for Engineering case 761751.
764386 If an application executed a query against a Microsoft SQL Server proxy table that contained SELECT FIRST or a subquery in an IF EXISTS( � ), then there was a chance the Remote Data Access layer would incorrectly send the SELECT FIRST to the remote server. Note that a similar problem existed with remote Oracle servers as well. These problems have now been fixed and the Remote Data Access layer will now send a TOP 1 instead.
764411 If the first line of the HTTP response from an outbound client HTTP request was split across two or more packets then the server would have failed to accept the response from the remote server. This has been fixed.
764425 In some cases the server cache would not shrink. This would have happened after a drop in server activity that prompted rapid cache growth. The rapid cache growth had to have happened because of an allocation of pages for heap or temporary table pages. Although the cache was not able to shrink, it would have been reused. This has now been fixed.
764516 In the "Connect" dialog for an UltraLite database, if "Tools/Copy Connection String to Clipboard" was clicked, the database encryption key (if set) was copied in clear text to the clipboard. This has been corrected so that the key is now replaced by three asterisks, the same as for the connection password.
764620 The system procedure sa_certificate_info() was returning binary data for the Serial Number field of a certificate. This has been fixed so that it now returns a hexadecimal representation of the serial number.
764632 When using the Import Wizard to import shape file data into a database, the wizard showed a page which prompted for a table in which to save the data. That page included a component that listed all of the owners in the database. That list inadverently contained system-defined role names. This has been corrected so that these names are no longer in the list.
764783 GET requests with $top=0 should be allowed on collections but return no result. and an HTTP 500 error. This has been fixed.
764810 On Linux and Mac OSX platforms, the server was not accepting denormal double values in INSERT statements. This has been fixed.
764849 If a very long string was unloaded from a database and was loaded into a second database with a different character set, the LOAD TABLE statement may have returned the SQL error: -1313, 揗aximum string length exceeded.� This was only likely to happen if the length of the string was within a page size of the string limit of 2GB-1. This has been fixed.
764913 The following features are not supported on Linux/ARM and these features have now been disabled on this platform:

- Remote Data Access

- External Stored Procedures (note these are native dlls and shared objects that are loaded in process)

- External Environments (including JAVA, CLR, PERL, PHP, C_ODBC and C_ESQL external environments)

- LDAP UA

- Kerberos Authentication

764973 In rare, timing dependent cases, the server could have failed assertion 101201 - "Deferred growth not suspended for checkpoint" after a cancelled backup which did a log rename or truncate. This has been fixed.
765031 A polygon in a Round Earth SRS could have failed to be represented correctly if it contained an edge on the equator going east to west and crossing latitude 0. This has been fixed.
765281 In low memory situations, or where the maximum cache size was set low, it was possible for the UltraLite runtime to crash. This has been fixed.
765332 If the alias name in a SQL statement was longer than 128 characters, a SQL Anywhere .NET data provider client application could have crashed.

Example:

SELECT 'string' AS "alias...name" FROM dummy

Similarily, if a SQL column expression contained more than 128 characters, a .NET client application could have crashed.

Example:

SELECT 1+2+3+...+1000 FROM dummy

These problems have been fixed. Alias and expression names are now restricted to at most 128 characters by the SQL Anywhere .NET data provider.

As a work-around for the first case, restrict the length of alias names to at most 128 characters.

Example:

SELECT 'string' AS expr FROM dummy

As a work-around for the second case, use an alias name and restrict the length of its name to at most 128 characters.

Example:

SELECT 1+2+3+...+1000 AS expr FROM dummy

765334 In a .NET application, a buffer overrun could have resulted when using an SADataReader to get the value of a very long column value.

Example:

SELECT SPACE(1147483643) FROM dummy

The possible buffer overrun has been corrected.

765363 In timing dependent cases, the server could have crashed, or otherwise failed, if a backup was cancelled. This has been fixed.
765434 Creating a publication with an article greater than 256 bytes in length would have resulted in crash of the UltraLite runtime. This has been corrected so that articles of up to 2048 bytes in length are now supported. SQLE_STRING_PARM_TOO_LONG is now reported when a publication predicate is >=2048 bytes.

The database must be created or rebuilt to access the larger publication article size. Older databases will continue to work with a max publication article size of 256 bytes. Databases created or rebuild with this change will run on older runtimes provided publication articles are <= 256 bytes.

765443 Reading beyond the end of a file (e.g., for a LOAD TABLE statement from a 0-length file) on Linux when the file is on a remote NFS drive may cause the server to crash. This will only happen if O_DIRECT is enabled over NFS in Linux kernel versions 3.5, 3.6, and 3.7.

Details of the kernel bug can be found here:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/nfs/direct.c?id=67fad106a219e083c91c79695bd1807dde1bf7b9

This has been fixed. Direct I/O will no longer be used for remote file systems on these Linux versions. Upgrading the Linux kernel to at least 3.8 is the only workaround.

765449 The Relay Server keeps records of statistics per type of client and there is an internal limit of 1600 types per backend server in the backend farm. When this limit was reached the Relay Server would have issued an RSF13011 error and failed the relay. This has been fixed with the following changes:

- The Relay Server no longer creates new metrics until the rs_monitor.dll has been accessed. Most partners don抰 distribute rs_monitor.dll.

- If rs_monitor.dll has been accessed and the number of client types of a backend server has exceeded 1600, a new RSW107 warning is issued instead of the RSF13011 fatal error.

- In the RSW107 situation, the Relay Server will continue to relay the traffic, but no new metrics are created for the new client type.

765512 When the Outbound Enabler used a secure HTTPS connection to the backend server, if the connection to the backend server was re-used after it was recycled, it was possible for the Outbound Enabler to have crashed. This has been fixed.
765566 Certain syntactically-invalid queries using SELECT FROM DML constructs could have caused the server to crash. This has been fixed.
765821 Server could have hang while executing a stored procedure that invoked other stored procedures. This has been fixed.
765825 IQ customers might experience a failure invoking the stored procedure sa_checkpoint_execute with a database assertion failure. This has now been fixed.
765928 Transient device write failures (that is, OS file-write primitives intermittently reporting failure) could have resulted in subsequent UltraLite database corruption. This has been fixed.

Note, device I/O errors still require the database to be restarted. Corrupt databases can be detected with the Validate API or ulvalid utility.

765979 Calls to connection_property( 'TempFilePages' ) could have incorrectly returned values greater than 2 billion when 0 should have been returned. This has been fixed.
765993 The server allows one extra connection beyond the connection limit as long as that connection has the DROP CONNECTION privilege (or DBA authority prior to version 16). This is to allow that connection to drop other connections if all connections to a server become blocked. However, once this extra connection was made, the server would not have allowed new connections until, (a) that extra connection went away, or (b) two other database connections went away. This has been fixed � (b) above has been changed to 搊ne other database connection goes away�.
766053 If a PHP string variable X points to the same content as variable Y, and variable Y is bound to a SQL Anywhere parameter using sasql_stmt_bind_param, the contents of variable X would have been corrupted. This has been fixed.
766057 In rare cases, the mirror could have taken many minutes to become synchronized if the primary was not committing any changes. During this time, if the primary failed the mirror could not take over as primary. Also, during this time a measurable amount of network traffic would be observed between the primary and mirror. This has been fixed.
766113 The ADO.NET provider would not have been able to roll back a transaction if CHAINED option was OFF. This has ben fixed by setting CHAINED option to ON after opening a database connection.
766115 Visual Studio 2013 integration was not supported. SetupVSPackage has now been modified to create registry keys for Visual Studio 2013.
766132 If the ODBC driver or other client interfaces ran out of memory they could have crashed. This has been fixed.
766224 When running the SQLA SP installer in silent mode on Linux, it could incorrectly have given the error "The registration key provided is invalid." This has been fixed.
766303 The server usage text should display the switches in alphabetical order. "-sbx" was not placed properly. This has been fixed.
766369 When running sqlpp on Linux systems with a recent version of glibc, a syntax error could have been reported for perfectly good code. Moreover, the "near" text may have appeared mangled. For example, running the following statements through sqlpp:

EXEC SQL BEGIN DECLARE SECTION;

EXEC SQL END DECLARE SECTION;

would have resulted in the following error:

test.sqc(35): Error! E2636 near 'AREARE': Incorrect Embedded SQL syntax

This has been fixed. There is no known workaround for this.

766464 Host name and Relay Server version information have now been removed from the status page when accessed through the client or server extension. The information still remains available via the optional admin or monitor extensions. The admin and monitor extensions are expected to be accessible by administrators only.
766511 In Visual Studio, incorrect major version information for the SQL Anywhere plugin may have been shown in the "Choose Data Source" and "Add Connection" dialogs on non-English systems. This has been corrected.
766532 If invalid HTTP parameters were provided to the database server running on Unix systems, the server may have detected, but tyhen hung. This has been fixed.
766935 UltraLite Initialize Database utility would have reported �?missing string?� as the description for some collations (ulinit -Z). This has been fixed.
767046 If the Data Source utility (dbdsn) was used to create, modify, or delete a DSN, and the Driver connection parameter was used, the driver name would have needed to match the installed driver name exactly. This has been fixed so that the name is now case-insensitive.
767047 If a database was initialized or upgraded with the SQL SECURITY INVOKER model using version 16 software, then calling any of the procedures below would have incorrectly verified procedure permissions using the current logged in user, instead of the current effective user. This would have led to incorrect 'permission denied' errors if any these procedures were called from another procedure that was defined with SQL SECURITY DEFINER, and the owner of that outer procedure had permission to execute any of these system procedures, but the logged in user did not have the same permissions. This problem has now been fixed.

The affected system procedures are:

- sa_server_option

- sa_db_option

- sp_create_secure_feature_key

- sp_alter_secure_feature_key

- sp_drop_secure_feature_key

Note, the original permission denied problem still exists if the database is initialized or upgraded with the legacy SQL SECURITY DEFINER model.

767050 Under rare circumstances, the server could have failed a fatal assertion with a 揇ynamic memory exhausted� error. This has been fixed.
767053 Applications that attempted to make server side calls in a CLR External Environment would only have worked with .NET 2.0 or 3.5. Applications could use the CLR External Environment with assemblies targeted at .NET 4.0 or 4.5, provided those assemblies did not make server side calls back to the SQL Anywhere server. This problem has now been fixed, and new CLR External Environment executables have now been included for use with .NET 4.0 or 4.5.

It should be noted that only one CLR External Environment can be launched per database. Hence applications need to decide prior to starting the CLR External Environment which version of .NET should be used. By default, the server will launch the CLR External Environment that will allow server side calls using either the .NET 2.0 or 3.5 Provider. If an application needs to make server side calls using .NET 4.0; then the following ALTER EXTERNAL ENVIRONMENT statement must be executed prior to starting the CLR External Environment:

ALTER EXTERNAL ENVIRONMENT CLR LOCATION 'dbextclr[VER_MAJOR]_v4.0 '

Similarly, if an application needs to make server side calls using .NET 4.5; then the following ALTER EXTERNAL ENVIRONMENT statement must be executed:

ALTER EXTERNAL ENVIRONMENT CLR LOCATION 'dbextclr[VER_MAJOR]_v4.5 '

If the application needs to go back to .NET 2.0 or 3.5; then the following ALTER EXTERNAL ENVIRONMENT statement must be executed:

ALTER EXTERNAL ENVIRONMENT CLR LOCATION 'dbextclr[VER_MAJOR] '

Note that in each of the above [VER_MAJOR] should NOT be replaced with one of 12 or 16. It is best to keep [VER_MAJOR] as is in order to ensure a smooth transition to a newer version of SQL Anywhere if needed.

767121 If an application attempted to execute an ALTER EXTERNAL ENVIRONMENT statement on a case sensitive database, then the server would return an external environment not found error if the environment name was specified in mixed or upper case. This problem has now been fixed.
767365 Execution of an ALTER TABLE � ADD with multiple add clauses, each containing a default value, may have caused server assertion failures. This has been fixed.
767530 The SQL Anywhere ODBC sample inside the C example directory (odbc.c) used ODBC 2.0 calls and could not link against the SQL Anywhere Driver Manager for Unix on Unix platforms. This has been corrected so that the sample now utilizes ODBC 3.0 calls and can link against the driver manager successfully.
767595 For same-machine HTTP connections, connection_property(慍lientNodeAddress�) would have returned an IP address (usually �127.0.0.1� or �::1�). For same-machine connections, this property should return an empty string. This has been fixed.
767780 The server could have taken a long time to shutdown if the built-in HTTP server was used during previous executions of any server on the same computer.

Other side effects of this problem may also have been seen:

- If the sadiags.xml file was large then the merge-to-disk operation that automatically happens at midnight each day may have taken a long time and any other operation that caused a feature to be 慶ounted� would have blocked until the merge was complete. I.e. some operations at midnight may have been seen to 慼ang� or take longer than usual to complete.

- Mobilink servers could also suffer the slow shutdown (or midnight sync) problem if a database server was running on the same computer and that database server had generated a large sadiags.xml file.

This has been fixed. A work-around is to delete the sadiags.xml file prior to shutting down the server. This should only be expected to improve the shutdown time if the size of the file is large (e.g. over 100K bytes).

767793 In rare, timing dependent cases, when the primary went down and the mirror failed over to become the new primary, it was possible the transaction log on the new primary to contain operations that were never applied to the database. This could have resulted in the database file on the primary being different from the database file on the mirror and any copy nodes. The mirror or copy nodes could have failed with errors or assertions related to applying the transaction log. This issue was possible, but extremely unlikely and never observed, if the synchronization_mode was synchronous. It had been observed if the synchronization mode was asynchronous or asyncfullpage. This has been fixed.
767799 When attempting to create a database with the reserved name 憉tility_db�(a very rare use case), the server would have leaked memory. This has been fixed.
767805 The server could have crashed when performing a query containing a CUBE or ROLLUP, or that specified grouping sets. This was only possible when the server was operating in a memory-constrained environment. This has been fixed.
767808 If the Information utility (dbinfo), or the Validation utility (dbvalid), or the VALIDATE DATABASE statement, was run against a database and a backup of that database was done shortly thereafter, there may have been problems recovering the backup. This has been fixed.
767873 The server could have crashed when performing a recursive union query. This would only have occurred when running the query against a server with a very small buffer pool or many active memory-intensive queries. This has now been fixed.
767881 When SQL Remote was generating messages, if a change had been made to a column with a numeric or decimal data type, SQL Remote would have failed to add information to the message that would have allowed the receiving side to have performed conflict resolution. This issue has now been fixed.
767963 Calling the system procedure xp_cmdshell() could have caused the server to shut down on UNIX in rare, timing-dependent events. This has been fixed. There is no known workaround.
768034 In rare timing dependent cases, a synchronized mirror server could have failed to take over as primary when the old primary went down. In order for this problem to have occurred the mirror database must have restarted while the primary server was still running. This has been corrected.
768174 When using the SQL Anywhere .NET Data Provider, decimal values would have been displayed with trailing zeroes removed. For example, instead of 5.1000, it would have been displayed as 5.1. This was an unintentional change in behavior which has now been corrected.
768186 The server may have returned poor selectivity estimates for equi-sarg searches on a floating-point type column. Some changes have been made to improve the accuracy of these estimations.
768311 Under exceptionally rare circumstances, the server may have crashed when running the system function CONNECTION_PROPERTY() for a connection other than the one making the request, if the queried property was a connection option but not a connection statistic. This has been fixed.
768346 The server wopuld have incorrectly returned the error "Invalid recursion" for a query that contained proxy tables and the UNNEST construct. This has been fixed.
768379 The MobiLink server with integrated Outbound Enabler could have crashed. This has been fixed.
768466 In rare cases, the server would have appeared to not have processed requests for a duration of 30 seconds. For this to have occurred. the auto multiprogramming level adjustment had to have been active and there had to have been many client side connections that were blocked. This has now been fixed.
768513 When defining MobiLink server Command Lines, two of the available options are 杝l java and 杝l dnet. These are used to pass startup parameters to the Java VM or .NET CLR used to process Java or .NET scripts. The value entered for these options in the MobiLink Server Command Line Properties dialog were automatically enclosed in quotes when generating a MobiLink server command line (eg 杝l java �-c c:\myjava� ). This was incorrect, the MobiLink server expects these option values to be enclosed in brackets or braces. This has been fixed so that if the value entered is already surrounded by brackets or braces, nothing will be added to it, otherwise the value will be enclosed in brackets. (ex 杝l java( -c c:\myjava)
768514 On some RedHat distributions, if the SQL Anywhere Monitor was configured as a service that started automatically when the computer was rebooted, it may have sporadically failed to start. This has been fixed.
768652 Sybase Central would have failed assertions, or behaved incorrectly, when running on a machine with a Turkish locale, regardless of the database抯 collation or the server machine抯 locale. This has been fixed.
768684 The server may have returned the error 'Invalid expression' or crashed, if common table expressions were used in statements with proxy tables. This has now been fixed.
768717 The ADO.NET provider now supports Entity Framework 6. A new dll (iAnywhere.Data.SQLAnywhere.EF6.dll) has been added to %SQLANY%\Assembly\V4.5 directory. SetupVSPackage still registers the v4.5 dll. To use the new Entity Framework 6 provider, register it in app.config or web.config.

For example:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<configSections>

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

</configSections>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

<connectionStrings>

<add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=iAnywhere.Data.SQLAnywhere;provider connection string='datasourcename="SQL Anywhere 12 Demo"'" providerName="System.Data.EntityClient" />

</connectionStrings>

<system.data>

<DbProviderFactories>

<clear />

<add name="SQL Anywhere 12 Data Provider" invariant="iAnywhere.Data.SQLAnywhere" description=".Net Framework Data Provider for SQL Anywhere 12" type="iAnywhere.Data.SQLAnywhere.SAFactory, iAnywhere.Data.SQLAnywhere.EF6, Version=12.0.1.41474, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />

</DbProviderFactories>

</system.data>

<entityFramework>

<providers>

<provider invariantName="iAnywhere.Data.SQLAnywhere" type="iAnywhere.Data.SQLAnywhere.SAProviderServices, iAnywhere.Data.SQLAnywhere.EF6, Version=12.0.1.41474, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />

</providers>

</entityFramework>

</configuration>

768718 When using the JDBC driver in a multithreaded Java application on Windows, a crash may have occurred in the heap management run-time code (HeapFree). This problem also appeared when using the MobiLink Profiler, since it uses the JDBC driver. This problem has been fixed.
768791 The server could have hung attempting to schedule a recurring event. This has been fixed.
768875 Attempting to create a maintenance plan could have failed if the Allow_nulls_by_default database option was set to 慜ff� the first time the Maintenance Plans folder was selected for that database in Sybase Central. This has been fixed.
768882 Under rare circumstances, executing a procedure defined with SQL SECURITY INVOKER could have cashed a server crash. This has been fixed.
768926 The installer抯 default feature selection on Windows x64, combined with a limitation of InstallShield, resulted in the 32-bit OLEDB driver not being registered as a COM server. This has been fixed.
769059 Wide INSERT statements (i.e., prepared insert statements which insert more than one row at a time) require that each host variable/parameter appear exactly once within VALUES clause and not be nested within an expression. In some cases, a repeat host variable name would not have been detected and the resulting inserted row could have contained an incorrect value within one of the columns. This has now been fixed. Incorrect wide inserts will now return SQL code -155 (Invalid host variable).
769065 The message that reports an update count would have reported the wrong action (INSERT, UPDATE, DELETE or MERGE) if a number of statements were executed at once, and were not separated by a command delimiter. This has been fixed.
769156 Given a simple stored procedure such as the following:

create procedure sp_test( in @a integer, in @b integer )

begin

select @a + @b as c;

end

Binding two host variables and executing 揝ELECT * FROM sp_test(?, ?)" just after starting the database server, then the error "Not enough values for host variables" might have resulted. Subsequent execution attempts would have succeeded. A similar problem would have occurred when "SELECT * FROM sp_test(?, ?)" was executed immediately after (dropping and then) creating the stored procedure. This has now been fixed.

769159 When attempting to connect to a secure SMTP server using the system procedure xp_startsmtp(), the connection would not have timed out. This has been fixed.
769347 The UPDATE and DELETE statements do not support ordinal column numbers in the ORDER BY clause. DELETE statements that bypass the optimizer did not return an error if ordinal column numbers were used in the ORDER BY. This has been fixed.

For UPDATE and DELETE statements the SQL reference correctly documents:

"You cannot use ordinal column numbers in the ORDER BY clause."

But for DELETE statements the syntax must be changed from

[ ORDER BY { expression | integer } [ ASC | DESC ], ... ]

to

[ ORDER BY expression [ ASC | DESC ] , ...]

769356 Under exceptionally rare circumstances, the server may have crashed during concurrent execution of a stored procedure that contained a LOAD TABLE statement. This has been fixed.
769394 Using UltraLite on iOS 8 beta software resulted in synchronization errors with HTTPS.

This has been fixed

769501 Query plans involving parallel hash joins running in memory-constrained environments may have failed to return all of the rows from the join. These query plans may also be used by internal operators, such as those that do table validation and foreign key building, causing these statements to also fail. This has now been fixed. The problem can avoided by disabling parallel query execution (set option PUBLIC.max_query_tasks=1), and can be made less likely by increasing the amount of memory available to the server.
769515 If the system procedure sa_validate() was called with a table or materialized view name only, then only one of the possibly several owner.name objects was validated. For example, given two tables named "Products" as follows:

CREATE TABLE FarmEquipment.Products(...);

CREATE TABLE HighwayEquipment.Products(...);

the following statement would only have validated one of them at random:

SELECT * FROM sa_validate( 'Products' );

Even if the user execting the SELECT was the owner of a table called "Products", it may not have been the table that is validated. In other words, the statement above was not equivalent to:

VALIDATE TABLE Products;

The documentation states that all tables/materialized views matching the specified object name are validated. This problem has been fixed. The work-around is to specify the table/materialized view owner (the second argument).

769615 Prefetch performance may have been slightly lower than it should have been. This has been fixed so that prefetch performance is better in some cases, depending on the operating system and the data being fetched.
769672 The MobiLink server log files created on Unix systems did not give read permission to anyone except for the user who has created the files. This has not been corrected. Now the MobiLink server log files will have read permission set for the group and other users as well.

Note, this change will apply to dbremote and dbmlsync logs as well.

769689 Queries with predicates of the form: "not exists(subquery)" could have had a sub-optimal execution plan. This has been fixed.

The conditions for which this could happen must include:

(1) (subquery) was correlated with the main query block

(2) (subquery) has a very small size comparing to the table[s] referenced by the correlations

769879 Previously, DBISQL did not commit when disconnecting from a SAP HANA database even if its "Commit on exit or disconnect" option was selected. This has been fixed.
770143 The version of OpenSSL now used by the server (as well as all SQL Anywhere products) is 1.0.1i.
770200 The unused Batik JAR file JS.JAR has been removed from the list of JAR files that the Interactive SQL utility searches for on startup.
770324 The Broadcast Repeater utility (dbns16) did not start. This problem has been fixed.
770430 A server thread can go into an infinite loop attempting to update an index, eventually resulting in a server hang. The index in question is not corrupt, the server was just misinterpreting an index key. The is fixed so that the key is now interpreted correctly.
770488 UltraLite would have failed to sync using HTTPS on iOS 8. This has now been fixed.
770496 Under exceptionally rare circumstances, the Unload utility (dbunload) would have returned the error "Primary key for table 'sa_unload_stage2' is not unique". For this to have occurred, the unloaded database must have contained foreign keys with very high ids, and the constraint name of the foreign key must have been renamed. This has been fixed.
770500 Under exceptionally rare circumstances, the server may have crashed when executing the function CONNECTION_PROPERTY() for a connection other than the own executors connection, if the queried property was an connection option, but not a connection statistic. This has been fixed.
770510 Under rare circumstances, the server could have crashed executing query plans involving group-by operators above parallel scans when operating in memory-constrained environments. This has been fixed. The problem can be avoided by disabling parallel query execution (set option PUBLIC.max_query_tasks=1), or made less likely by increasing the amount of memory available to the server.
770576 On Red Hat Enterprise Linux 7, the Interactive SQL utility could not check for updates, nor could they open online help if the computer it was running on required a network proxy to reach the internet. This has been fixed so that on non-Windows platform, the software will use the proxy information in the http_proxy environment variable, if set.

Note, this problem also affected Sybase Central and the Console utility, which are fixed as well.

770593 When installing the SQL Anywhere Monitor on a non-Windows platform, if the DISPLAY variable was not set the install would have hung at the end trying to open a browser. This has been corrected by no longer launching a browser in this case.
770597 The server may have crashed while updating a histogram. This has been fixed.
770747 The Interactive SQL utility (dbisql) could have consumed more disk space than was required under certain circumstances. This has now been corrected.
770760 Visual Studio 2012/2013 would have failed to generate a Entity Framework 6 data model using a SQL Anywhere database. This has been corrected.

The steps for generating Entity Framework 6 data models (Entity Framework 6 Tools for Visual Studio 2012 & 2013 should be installed):

- Run SetupVSPackage.exe with �/v 6� option to register the Entity Framework 6 Provider.

- Install Entity Framework NuGet Package for the Visual Studio project.

- Modify app.config file to add the Entity Framework 6 provider. Here抯 an example:

<providers>

<provider invariantName="iAnywhere.Data.SQLAnywhere" type="iAnywhere.Data.SQLAnywhere.SAProviderServices, iAnywhere.Data.SQLAnywhere.EF6, Version=16.0.0.20144, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />

- Build the Visual Studio project.

- Run Entity Data Model Wizard.

770843 when comparing databases, SQL Central would have appeared to hang if the database contained a large procedure definition. This has been fixed.
770940 When an entity modification request violates a check constraint, the OData producer responded with an internal server error like:

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">

<code>30000</code>

<message xml:lang="en-US">An unexpected error occurred in the producer. Contact the server administrator for more details.</message>

</error>

This has been fixed. Check constraints will now return either 30144, 30145 or 30146 errors, similar to unique constraint violations, depending on the type of request (INSERT, UPDATE or DELETE).

770952 The following issues related to the Database Documentation wizard have been fixed:

On Windows systems: Sybase Central could have become unresponsive for about a minute when viewing the generated documentation, and the directory was specified from the root of the drive but did not include the drive letter.

On non-Windows systems: Generating the documentation to a directory with a space in its name, and then attempting to open the documentation would have failed.

770956 A query with WITH RECURSIVE and FOR XML/JSON clauses could have returned an error when used in a stored procedure definition. This has been fixed.

Note, affected procedures will need to be recreated with the fixed version of the server.

770967 The following issues have been fixed:

If a post login procedure did not return a result set, the Interactive SQL utility would have crashed.

Also, a race condition could have caused the window containing the post login messages to appear on-screen at the same time as the "Connecting to database" status window. When this occurred, neither window could have been closed.

771044 The server may have incorrectly returned the error: 'Function or column reference to '<user-name>' in the ORDER BY clause is invalid', if a select statement used a user-defined function with an owner name in the ORDER BY clause; e.g. ORDER BY <user-name>.<function-name(...). This has been fixed.
771105 The global variable @@error could have been set incorrectly for the first error encountered in a stored procedure or batch. This has been fixed.
771281 The server may have appeared to hang while creating a histogram on a NUMERIC column that had an index. This has been fixed.
771288 When specifying a certificate for use in a secure web service call, the call could have failed (with a TLS handshake error) if multiple certificates were specified using 揷ertificate=�. For example, this could have happened if using 揷ertificate=xp_read_file( certificate_file )� and the file contained more than one certificate. This has been fixed.
771300 Synchronizations over HTTP could have failed if the command line option 杦n was greater than one. This has been fixed.
771364 When searching in SQL Central if the server was shut down, or the connection to the database was dropped from another application, then SQL Central would have shown multiple error dialogs, each of which needed to be closed before SQL Central could be used again. This has been fixed.
771379 The web server port was not displayed in the Overview tab. This has been fixed
771429 The Interactive SQL utility would have crashed when using the Import Wizard to import a shape file, and that shape file had an associated .DBF file which contained a DATE, TIME, or TIMESTAMP column. This has been fixed.
771431 In specific circumstances, if there were concurrent connections executing the same procedure it was possible for the server to crash. The conditions were rare and timing dependent, and have now been fixed.
771441 Creating a JSON service that called a procedure which set the CharsetConversion option would have caused the server to crash. This has been fixed.
771444 JSON services would have returned an empty document if an SQL error occurred. This has been fixed so that an object containing one row with two keys, status: 揺rror�, and message: �<text of the SQL error message>�, is now returned.
771541 Attempting to have the MobiLink server bind a virtual IP address while specifying the 揾ost� stream parameter, would have resulted in error -10259 揘etwork address '<host>' is not local� on some platforms. This has been corrected so the server will print warning 10126 �'<host>' might not be a local address�, instead.
771542 Executing CREATE SUBSCRIPTION or DROP SUBSCRIPTION statements could have failed if they used a subscription-value. This has been fixed.
771618 The server may have crashed when using ARRAY or ROW type values in statements that needed to convert them to strings. This has been fixed.

Note, the problem does not happen in DDL and DML statements.

771622 The COUNT_BIG() aggregate function is intended to be used in cases where the number of rows is larger than can be represented in an INTEGER. When initially implemented for SQL-level compatibility, COUNT_BIG() was an alias for COUNT(), returning an INTEGER and restricted to the same supported input cardinalities. COUNT_BIG() has been corrected to now return a BIGINT.

When executing a parallel query plan with a COUNT_BIG() over a table larger than representable in an INTEGER (approximately 2 billion rows), an error such as 揤alue SUM() out of range for destination� was returned. This is now corrected.

The SUM(x) aggregate function now returns BIGINT if x is of type BIGINT.

When using COUNT_BIG() in sliding window queries, the window was re-scanned for each row of the window instead of decrementing the count when rows were removed. This has been corrected.

The graphical plan for window operators now displays the PARTITION BY, ORDER BY, and window functions computed by the operator. It also shows whether rows are removed from the functions by inverting the aggregate (e.g., SUM, COUNT, COUNT_BIG) or by rescanning the window (e.g., MIN,MAX). Rescanning the buffer is slower and proportional to the square of the maximum buffer size.

The COUNT_BIG aggregate is now supported for incremental maintenance materialized views.

When printing COUNT_BIG with no argument, it is now printed as COUNT_BIG(*).

If COUNT_BIG() was used in a subquery that was flattened by semantic transformations, it was possible for the function to improperly return NULL instead of 0 (the classic count bug). This has now been corrected.

771690 In very rare cases, the server may have crashed while executing the system procedure xp_cmdshell() if the client connection calling the procedure was cancelled. This has been fixed.
771708 When using the SQL Anywhere .NET Data Provider, if the BulkCopyTimeout property was set to 0, an exception would have occurred during a call to WriteToServer. This has been fixed. The value 0 means that there is no timeout.
771709 When using the UltraLite .NET Data Provider, if the BulkCopyTimeout property was set to 0, an exception would hace occurred during a call to WriteToServer. This has now been fixed. The value 0 means that there is no timeout.
771731 If an ALTER failed between START and STOP SYNCHRONIZATION SCHEMA CHANGES there was a possibility that the server would have failed assertion 107101 ("Table lock inconsistency"). This has been fixed.
771766 UltraLite will now use the system抯 trusted roots if no trusted root certificate is provided.

Also, the install package now includes a compiled library in the usual place. The script build.sh is no longer used to produce the library after installing.

771780 If an application made an external environment call and then subsequently used STOP EXTERNAL ENVIRONMENT or STOP JAVA to shut down the external environment then there was a very small chance the server could have hung or crashed if the external environment crashed at the same time as the stop request. A similarly rare problem could have occurred if the connection was dropped at the same time the external environment crashed. This problem has now been fixed.
771866 Errors in batch change sets where formatted as multipart, contrary to the OData specification.

For example:

--batch_5f3ccbef-11fe-4dcc-a546-02ba2e746d72

Content-Type: multipart/mixed; boundary=cs_025fc4e4-fd30-4372-8fa4-5b941ee66915

--cs_025fc4e4-fd30-4372-8fa4-5b941ee66915

Content-Type: application/http

Content-Transfer-Encoding: binary

HTTP/1.1 400 Bad Request

RepeatabilityResult: accepted

Content-Type: application/json;charset=utf-8

{

"error" : {

"code" : "30063", "message" : {

"lang" : "en-US", "value" : "An entity instance with this key already exists."

}

}

}

--cs_025fc4e4-fd30-4372-8fa4-5b941ee66915--

--batch_5f3ccbef-11fe-4dcc-a546-02ba2e746d72--

should be:

--batch_5f3ccbef-11fe-4dcc-a546-02ba2e746d72

Content-Type: application/http

Content-Transfer-Encoding: binary

HTTP/1.1 400 Bad Request

RepeatabilityResult: accepted

Content-Type: application/json;charset=utf-8

{

"error" : {

"code" : "30063", "message" : {

"lang" : "en-US", "value" : "An entity instance with this key already exists."

}

}

}

--batch_5f3ccbef-11fe-4dcc-a546-02ba2e746d72--

This has now been fixed.

771873 If the Interactive SQL utility (dbisql) was run as a command-line program, it was possible for dbisql to report that it could not connect to the database, and then proceed to execute a statement anyway. In this scenario, dbisql would set its return code to 9 (could not connect) which was inconsistent with the fact that it actually executed the statement. For this to have occurred, all of the following would have had to be true:

- A valid connection string and a statement must have been specified on the command line,

- The database server had to be unreachable when dbisql started

- The database server must then have become available as dbisql completeed its startup sequence

This has been fixed. If the database server is unavailable when dbisql initially attempts to connect, it will now simply shut down, rather than attempting to execute the given statement.

771878 If a client-side backup was terminated, or failed due a communication error or other unexpected error, database and transaction log file growth could have had poor performance. This has been fixed.

Also, if the server was shut down while a backup was in progress, the backup could have reported a protocol error. This has been fixed so that a "Database server not found" error is now returned.

771963 A new OData Producer option has been created which allows service operations to use the names of the result set columns from the database when naming the properties of the ComplexType used in the ReturnType. Previously, if a stored procedure returned a result set, the OData Producer would only have used generated names (rtn1, rtn2, rtn3, �). A side effect when using the new option is that it is possible that column names from the database are invalid OData identifiers, or there are duplicate column names in the result set, which can produce invalid metadata. In this situation, users will need to either change the names of the result set columns in the database, write a wrapper stored procedure with different columns names in the result set, or revert to using generated column names.

Option

[producer-name].ServiceOperationsColumnNames = { generate | database }

Description

Specifies whether the names of the columns in the metadata should be generated (rtn1, rtn2, �) or whether the names from the database should be used. The default setting is generate.

771964 If a service operation had been defined to call a function, attempting to call the service operation would have resulted in an unexpected error in the OData Producer. This has now been fixed.
772022 If an application fetched a result set that contained long varchar, long binary or long nvarchar columns, then the SQL Anywhere JDBC driver would have fetched the result set one row at a time in order to ensure the full column value of the long columns could be retrieved. For result sets that do not contain long columns, the SQL Anywhere JDBC Driver fetched multiple rows at a time instead. Applications can use the Statement.setMaxFieldSize() method to attempt to limit the amount of data the JDBC Driver retrieves, however calling this method did not make the JDBC driver fetch multiple rows at a time. The SQL Anywhere JDBC driver will now fetch multiple rows at a time for result sets that contain long columns if Statement.setMaxFieldSize() is called and the value passed in to setMaxFieldSize() is less than or equal to 32K. The behaviour for result sets that do not contain long columns remains the same and the JDBC driver will continue to fetch multiple rows at a time for these result sets.
772035 A stored procedure with a input parameter whose name was an invalid OData identifier would only have encountered problems when the service operation was called. A stored procedure with a input parameter whose name is an invalid OData identifier will now generate an error when the service operation is defined.
772116 Execution of sSubqueries whose predicates were sized datatypes, such as char, varchar, and binary, could have crashed due to a data alignment exception. This has been fixed.
772133 Calling the system function ML_GET_SERVER_NOTIFICATION() would have failed on iOS using a client identity stored in the database. This has been fixed.
772523 Under exceptionally rare circumstances, the server may have crashed when executing complex statements with proxy tables. This has been fixed.
772559 SQL Anywhere, MobiLink, and UltraLite, servers and clients, no longer support the SSLv3 protocol. All TLS connections must now be TLSv1 or higher.
772744 Applications calling the dbtools function DBLogFileInfo() could have crashed. This has been fixed.
772826 When the Interactive SQL utility (dbisql) was run as a console application and connection parameters were specified, but the database password was not, dbisql would have exited without connecting. Now, dbisql will prompt for a password, given that the "-q" (quiet) option was not specified. Since a password is not required on the command line, the password will not be visible with OS utilities used to view process command lines.
772828 If the URI for a service operation was specified with missing input parameters, the OData Producer will now pass a NULL value into the underlying stored procedure or function. If a default value existed for the input parameter to the stored procedure or function, the OData Producer would have used the default value, which was contrary to the OData specifications.
772899 The OData producer allowed properties and navigational properties to have the same name as the containing type (for example, Entity type T1 could have a property called T1 and a navigational property called T1), contrary to the OData specification. Association names could have the same name as a complex type or entity type. The most common occurrence for this issue would be when the producer generated associations for a database Table that had a self-referring foreign key. While some OData clients ignored these naming restrictions, others such as Microsoft's would not have worked with a service whose metadata contained these name conflicts. This has been fixed. OSDL files with such name conflicts now produce errors, and generated navigational properties and associations are given better names.
772919 Running the Mac OS X installer setup from the 揟erminal� application would have displayed a reference to the SQL Anywhere Supported Platforms web page with an old URL (i.e. http://www.ianywhere.com/products/supported_platforms.html). This has been corrected to http://scn.sap.com/docs/DOC-35654
773123 When computing a set operation (ST_Union, ST_Intersection, ST_Difference, ST_SymDifference), the value NULL was incorrectly returned if one of the inputs was an empty curve (e.g., 'LineString EMPTY'). This has been fixed.
773198 Under rare circumstances, the server may have crashed while executing a query with OPENXML functions. This has now been fixed.
773279 Turning off The Interactive SQL utility's COMMIT_ON_EXIT option had no effect for the session in which it was turned off. This has now been fixed.
773420 If more than 254 databases were specified on the command line when starting the database server, the server would have quit without giving an error. This has been fixed. A "Too many databases specified: <dbname>" error will now be generated.
773422 Under some conditions, when importing from a file containing long string values into a table with fixed length fields the server could have failed assertion 100914. This has been fixed
773426 Under exceptionally rare circumstances, the server would have taken a long time to build the final query plan. This may have occurred for very complex and large queries. During this time DDL statements were blocked, which caused subsequent requests to block as well. This has been fixed.
773529 The EncryptedPassword (ENP) connection parameter is used to specify an encrypted password. It is a substitute for the Password (PWD) connection password. The intent of the ENP connection parameter is to disguise the actual password used to authenticate to a database. The current implementation obfuscates the password.

There are some issues with this implementation:

- The encrypted password could have been used to authenticate to the database by anyone from any computer who also had the corresponding user ID.

- The ODBC Configuration for SQL Anywhere dialog of the ODBC Data Source Administrator (Windows-only) could have been used to return the encrypted password in clear text.

- The encrypted password could have been decrypted with some effort.

Encrypted password support has been enhanced with the following goals in mind:

- Ability to restrict use to a particular computer or a particular computer/user.

- Inability to reverse-engineer an encrypted password using the ODBC Configuration for SQL Anywhere dialog.

- Better encryption algorithms to ensure that the encrypted password cannot be decrypted.

- These enhancements to be available across all supported client platforms.

A password can be encrypted on a computer such that it can only be decrypted on that computer. Anyone who can log on to the computer can use the encrypted password and corresponding user ID to authenticate to a database. It cannot be used on any other computer.

A password can be encrypted on a computer by a user such that it can only be decrypted on that computer for that user. It cannot be used on any other computer by the same or other user.

The Data Source utility (dbdsn) supports a new option -pet a|c|u, a specifying how the encrypted password may be used. If -pet a is specified, the password is encrypted for use on any computer. If -pet c is specified, the password is encrypted for use on this computer only. If -pet u is specified, the password is encrypted for use on this computer by this user only. The -pe option which provides simple obfuscation continues to be supported; however, its use is deprecated.

Note that encryption for options -pet c and -pet u must be performed on the computer or computer/user for which it is intended to be used (decrypted).

Note also that -pet u is not appropriate for client applications that are implemented as Windows services. Although -pet u can be used for a Windows System DSN, it may be more appropriate to use -pet c (since this form of encrypted password can be used by any user of the computer).

The ODBC Data Source Administrator dialog is changed as follows:

- The Encrypt password option is no longer a checkbox but is now used to select from different encryption options including none, for use on any computer, for use on this computer only, and for use on this computer and this user only.

- The dialog can no longer be used to change the level of password encryption for an existing password, unless it was previously unencrypted. If the level of encryption is to be changed, then the password must be reentered.

The ODBC Configuration for SQL Anywhere driver for Oracle dialog is also modified accordingly.

These features allow a database administrator to restrict database access to a user on a particular computer without revealing the actual plain text password to the user. It also prevents the current password from being decrypted to memory and consequently subject to inspection.

When successful decryption is restricted to a particular computer or computer/user, it no longer matters that the encrypted password is presented in plain text. For example, the encrypted password in the following connection string cannot be used by anyone other than the computer/user for whom it was created.

dbping -d -c "Host=server-pc; Server=DemoServer; UID=DBA; ENP=05a17731bca92f97002100c39d906b70f3272fe76ad19c0e8bd452ad4f9ea9"

The new encrypted password features are not supported by client libraries prior to this change.

The File Hiding utility (dbfhide) options -wm (computer-only) and -w (computer/user-only) are now supported on all platforms for which dbfhide is available. The dbfhide tool can be used to encrypt an entire connection string to a file for use by most of the database tools that accept connection strings (e.g., dbping -d -c @credentials.hidden).

Note that the encrypted password support described here is a client feature (storage of passwords on the client) and should not be confused with encryption of passwords over the wire during authentication, a default feature of SAP SQL Anywhere and optional in products like SAP Adaptive Server Enterprise (ASE).

773535 Backend farms and backend servers can now be automatically configured with default properties when auto_config=yes is specified in the [Options] section in the Relay Server configuration file. When auto_config is turned on, the Relay Server becomes a Trust On First Use (TOFU) system where Outbound Enablers can connect with unseen backend farm ids and backend server ids. A group of Outbound Enablers belonging to the same backend farm may connect with a farm-wide token. When the Relay Server processes the first Outbound Enabler connection with unseen farm name, a new backend farm configuration will be created. The Relay Server updates the original configuration file and then persists the supplied token in a new backend farm property named token. Other backend farm properties are initialized to the default values. The auto farm configuration persists across Relay Server restarts. Similarly, backend server configuration is also created and persisted per Outbound Enabler with unique server ids within the backend farm. The token supplied by all outbound enablers belonging to the same auto farm must match the farm-wide token, otherwise, access is to be denied.

Other backend farm and server configuration can co-exist with auto_config=yes in the configuration file. Backend farms with farm-wide tokens can also be specified in the new token property of the [backend_farm] section in the Relay Server configuration file, so as to reserve the farm name before the Relay Server starts up.

This feature is suitable for demos, integration testing, training and other administration free environments.

Configurations created by this auto config feature can be further updated in on-line manner by using local rshost or remote AdminChannel. The auto_config property can also be changed in on-line manner using those tools

773538 The graphical plan did not show the value for "Final plan build time" in the "Advanced Details" of the top node under "Global Optimizer Statistics". This has been fixed.
773549 The response returned from a repeatable request may have been truncated or corrupted when GZIP or other compression related encodings were used. This has been fixed.
773629 When the path for the server command line option -a ("apply named transaction log file") was wrong (the path is relative to the database path, not the server path) the server still seemed to go through recovery even though it did not. This has been fixed. Now server will return an error in such situations.
773683 The server may have crashed if a DELETE statement that deleted rows from a local table also referenced proxy tables. This has been fixed.
773703 Under exceptionally rare circumstances, the server may have leaked an internal connection with the connection name "INT:FlushStats", and therefore could not complete the database and server shutdown when requested. This has now been fixed.
773811 The OData Server could have crashed on Linux systems when using an INI file and no LIBRARY_PATH was specified in the INI file. This has been fixed.
773812 The version of OpenSSL used by all SQL Anywhere products is now 1.0.1j.
773894 When an ADO.NET application enlisted with a transaction coordinator, a constant GUID was supplied by the SQL Anywhere ADO.NET Data Provider. This prevented additional .NET applications, running on the same system, from doing the same. The following error message may have been seen.

"A resource manager with the same identifier is already registered with the specified transaction coordinator. (Exception from HRESULT: 0x8004D102)"

This problem has now been fixed so that instead of a constant GUID, a new one is generated each time enlistment occurs.

773983 A request for a raw binary value would have been return with a content-type of (or equivalent) 'text/plain', when it should have be 'application/octet-stream'. This has been fixed.
774060 The server may have crashed or failed assertion 106104 - "Field unexpected during compilation" when using IN list predicates that do not just contain literal constants. This has been fixed.
774178 The execution of system procedure sp_auth_sys_role_info and system view SYSUSERPERMS, which uses system procedure sp_auth_sys_role_info, had some server wide synchronization that may have delayed other requests. This has been fixed.
774305 Execution of the statement DROP <object-type> IF EXISTS <owner>.<object-name> would have returned the error "User ID '%1' does not exist" if <object-type> was a FUNCTION, PROCEDURE, or PUBLICATION, and there was no user named <owner>. This has been fixed.
774328 In rare cases, dropping a temporary procedure could have caused the server to crash. This has been fixed.
774333 Certain values returned by the SNMP agent may have been incorrect. This would only have happened if the values were greater than approximately 2 billion. This has been fixed.
774462 Under rare circumstances, the server could have crashed when describing a result set returned from a stored procedure. This has been fixed.
774595 If an application had a trigger that referenced a materialized view, and if that trigger was subsequently fired while making an external environment call, then there was a chance the server could have crashed. This problem has now been fixed.
774600 When the OData Producer's ConnectionPoolMaximum configuration option was not specified, the producer would have set the value to the maximum number of connections available on the database. This could have potentially starved others from the database. This has been fixed. The default behavior is now to set the value for this option to be half the database抯 maximum number of connections.
774671 The Interactive SQL utility would have failed to set its exit code to a non-zero value in a number of cases:

- If no connection parameters were given, but a statement was given.

- If a READ statement or the name of a SQL file was given on the command line, and the file exists, but the file could not be read for any reason.

- If an error was encountered while reading the results of a statement.

This has now been corrected.

774773 In very rare, timing dependent cases, if a procedure was being accessed (normally due to being called) at the same time it was being dropped or altered, the caller could have executed the previous definition of the procedure. It was also possible in extremely rare cases to drop a procedure that was already dropped, which could have caused the server to assert it was applying this second incorrect drop operation. This has been fixed so that a caller cannot access the old definition of a procedure, and so that a procedure that is already dropped cannot be dropped again.
774798 In rare, timing dependent cases, the server could have crashed when getting one of the CharSet, NCharCharset, ClientLibrary or Language connection properties for another connection (using connection_property( prop_name, conn_number ). This has been fixed.
774899 The Relay Server State Manager (rshost) could have crashed while reporting a Relay Server configuration file error message:

"RSF11020: Missing required section �<section-name>� in configuration file �<config-file-name>�"

This has been fixed.

775142 When a statement has multiple search conditions on a single column, the server applies optimizations to combine and simplify these for two reasons:

- To identify a sargable predicate that could use an index scan.

- To improve the estimation of selectivity in order to make a better choice of access plan

For some types of queries that involved an OR or an IN list predicate, the first goal was satisfied reasonably well but the OR / IN list could have been retained, affecting selectivity estimation. In some cases, this could lead to underestimating the number of rows returned from a table scan, potentially leading to execution plans with higher costs.

This has been improved so that when multiple search conditions on a column contain an OR and/or an IN-list predicate, the predicate is simplified further.

775148 Under certain circumstances, connection_property( 'UtilCmdsPermitted', n ) could have crashed the server. This has been fixed.
775149 Apache setup script could have generated duplicate lines in the <apache-install>/bin/envvars file when the script was run multiple times. The duplicate lines were generated for setting the LD_LIBRARY_PATH environment variable. This has now been fixed.
775231 If the Service utility (dbsvc) was used to create a service with a space in the service name (eg. dbsvc -w 揗y service name�), the service would have been created but it would not be able to start. This has been fixed.
775239 The MobiLink server now supports spatial data synchronization against HANA SPS09 databases. Plain INSERT and UPDATE SQL statements can be directly used for the MobiLink server upload_insert and upload_update events if the geometry columns in the sync table are not nullable. Otherwise, stored procedures may need to be used for the upload_insert and upload_update events if the geometry columns are nullable, as HANA does not support null SRIDs, even its geometry data is null. Here are sample stored procedures for the upload_insert and upload_update events for a sync table "test" that is defined as CREATE COLUMN TABLE test ( pk INT NOT NULL PRIMARY KEY, c1 ST_GEOMETRY(4326) ):

CREATE PROCEDURE upload_insert_proc (

IN p_pk INT,

IN p_geo BLOB,

IN p_srid INT )

LANGUAGE SQLSCRIPT AS

BEGIN

IF :p_geo IS NULL THEN

INSERT INTO test (pk, c1) VALUES( :p_pk, NULL );

ELSE

INSERT INTO test (pk, c1) VALUES( :p_pk, ST_GeomFromWKB(:p_geo, :p_srid) );

END IF;

END;

for the upload_insert event, and

CREATE PROCEDURE upload_update_proc (

IN p_pk INT,

IN p_geo BLOB,

IN p_srid INT )

LANGUAGE SQLSCRIPT AS

BEGIN

IF :p_geo IS NULL THEN

UPDATE test SET c1 = NULL WHERE pk = :p_pk;

ELSE

UPDATE test SET c1 = ST_GeomFromWKB(:p_geo, :p_srid) WHERE pk = :p_pk;

END IF;

END;

for the upload_update event.

775247 The value of the CurrentLineNumber connection property could have been reported incorrectly for a procedural statement (for example, SET or MESSAGE). This has been fixed.
775252 When an error occurred in one or more rows in a rowset during an ODBC fetch operation (e.g., SQLFetch, SQLFetchScroll, SQLExtendedFetch), the wrong row number was returned by SQLGetDiagRec. For example, if an error occurred in the 4th row of a rowset of 10 rows, then the following call returned diagRow set to 10, instead of 4.

rc = SQLGetDiagField( htype, hndl, rec, SQL_DIAG_ROW_NUMBER,

(SQLPOINTER)&diagRow, SQL_IS_POINTER, NULL );

Also, diagnostic records for each row in error may have been returned in the wrong order by SQLGetDiagRec, since the wrong row number(s) were recorded.

rc = SQLGetDiagRec( htype, hndl, rec, sqlstate, &native_error,

errmsg, sizeof( errmsg ), &errmsglen );

These problems have now been corrected in the SQL Anywhere ODBC driver.

775313 In rare cases, the server could have crashed applying the transaction log only on HP-UX systems. This has been fixed.
775318 Calling SQLExecute of a wide update statement would have returned SQL_SUCCESS_WITH_INFO for multiple parameter sets if one or more parameter sets did not update any rows.

The ODBC specification says:

When SQLExecute returns either SQL_ERROR or SQL_SUCCESS_WITH_INFO, an associated SQLSTATE value can be obtained by calling SQLGetDiagRec with a HandleType of SQL_HANDLE_STMT and a Handle of StatementHandle.

The SQL Anywhere ODBC driver violates this rule since it does not create any diagnostic records. WITH_INFO generally means that some things succeeded and some things failed and diagnostic records (the 搃nfo�) let you determine what failed. When there was only one parameter set, a parameterized update or delete statement may have returned SQL_NO_DATA. If there was more than one parameter set, and some sets affected no records, then the SQL Anywhere ODBC driver returned SQL_SUCCESS_WITH_INFO (but did not create any diagnostic records). This was incorrect behavior. The driver should have returned SQL_SUCCESS.

Also, when all parameter sets fail to update or delete any rows, the ODBC driver should still have returned SQL_SUCCESS. The SQL Anywhere ODBC driver woud have set all non-updating parameter status array elements to SQL_PARAM_SUCCESS_WITH_INFO (except that the driver incorrectly cascaded the WITH_INFO status into all subsequent array elements). The ODBC driver did create diagnostic records for the WITH_INFO parameters. This was also incorrect behavior.

These problems have been corrected. The SQL Anywhere ODBC driver now follows the ODBC specification in this regard.

775392 In rare circumstances, when queries were run with snapshot isolation over tables that had had new columns added, the server could have returned incorrect results, or possibly crashed. This has been fixed.

A workaround is to ensure that all rows touched by an ALTER have been fully updated inline. This can be done by issuing a pair of statements like the following:

alter table T add delete_me integer default autoincrement;

alter table T delete delete_me;

Snapshot queries over table T will now work correctly after these statements are executed.

775403 Under certain circumstances, calling the xp_scanf system procedure could have caused the server to crash. Also, format specifiers other than %s could have given unpredictable results. These have both been fixed.
775493 Execution of an ALTER TABLE � ADD COLUMN statement, using defaults that can return NULL on non-empty tables, could have caused data corruption. Two examples of NULL returning functions are user defined functions and GLOBAL AUTOINCREMENT. The newly added column must allow NULL values for this issue to occur. This has been fixed.
775550 When the procedure st_geometry_dump recursively expanded a geometry of dimension >= 1 defined in a round-earth spatial reference system, the rows returned for internal points were incorrect.

For example, the query:

select geom from st_geometry_dump( new ST_LineString(new ST_Point(1,1,4326), new ST_Point(2,2,4326)))

incorrectly returned the rows:

LineString (1 1, 2 2)

Point (180 -.000000000000006)

Point (180 -33.690067525979835)

This has been fixed.

775638 Hash operations used in query processing (join hash, group by hash, and distinct hash) choose a number of buckets based on the optimizer's estimated number of distinct keys. If the optimizer had an estimate that was far too low, the number of buckets selected could have been too small, leading to slower performance.

For example, the following query executed in 25.6s with the incorrect estimate 0.52% on L.row_num >= 0 (actual is 100%):

select *

from sa_rowgenerator(1,1.1727e6) L join sa_rowgenerator(1,34680) R on L.row_num = R.row_num

where (L.row_num >= 0, 0.52 )

options(User_estimates='On')

This has been improved so that performance is better even in the presence of underestimates:

Before change: 25.6

After change: 5.3

The graphical plan for hash-based query operators now includes lines to indicate how many key values the optimizer estimates will be found and the number of hash buckets selected for execution:

Key Values 6098.04

Hash table buckets 1031

775640 When executing an ALTER TRIGGER � SET HIDDEN on an INSTEAD OF trigger for a view, an 搃nvalid trigger type for view� error was returned. This has been fixed.

Note, this issue also affects creating INSTEAD OF triggers with encrypted definitions on views as well.

775653 In rare cases, the server could have crashed if a procedure returned a ROW or ARRAY typed column in its result set, but did not have a RESULT clause. This has been fixed.

Note, if a procedure returns a ROW or ARRAY typed column in its result set, the procedure needs to have a RESULT column. Changing the procedure to use Watcom SQL syntax may be required. Calling a procedure that returns a ROW or ARRAY typed column in its result set without a RESULT clause may now result in the error, "Procedure '<name>' needs a RESULT clause for returned ROW or ARRAY."

775805 If a Data Source was modified in the registry to contain the 'Server' connection parameter rather than 'ServerName', that parameter would have been ignored. This has been fixed.
775809 In rare, timing dependent cases, the server could have crashed when making a native external function call if a thread deadlock error occurred. This has been fixed.
775928 The Interactive SQL utility could have incorrectly parsed a CREATE LOCAL TEMPORARY TABLE statement if it appeared within some other block structure (e.g. a BEGIN ... END block). This caused a problem if a subsequent DBISQL statement (e.g. INPUT, OUTPUT, EXIT) was encountered. The symptom was typically an error message from the database server which reported a syntax error near the first keyword of the DBSIQL statement. This has been fixed.
775938 If a spatial object was fetched in JSON format (using FOR JSON AUTO/RAW or ST_AsGeoJSON()), numbers between -1.0 and 1.0 would not have had the leading 0 that JSON requires. This has been fixed.
776140 An OData server with multiple producers, would have corrupted each other抯 state resulting in a high likelihood of incorrect behaviour. This has been fixed.
776157 Invalid use of the ARRAY clause in an embedded SQL EXECUTE statement could have crashed the server. This has been fixed.
776164 Calling ST_Buffer on geometries with certain geometric properties could have caused the server to crash due to a stack overflow. In other rare cases ST_Buffer could have failed with ring-not-closed errors, or generated resulting geometries that were (usually only slightly) incorrect. This has been fixed.
776240 With some versions of Linux and Unix, the Port field of the Connect to MobiLink Server window was not displayed correctly: it was too narrow for the port number to be visible. This has been fixed.
776241 Under rare circumstances, query plans involving parallel hash joins running in memory-constrained environments may have crashed the server. These query plans may also have been used by internal operators, such as those that do table validation and foreign key building, causing these statements to fail as well. The crash can occur only on servers that contained the fix for Engineering case 769501, as the issues fixed by that change would have masked the issue. This has been fixed.

Note, the problem can avoided by disabling parallel query execution (i.e. set option PUBLIC.max_query_tasks=1), and can be made less likely by increasing the amount of memory available to the server.

776338 If a MobiLink server receives an HTTP request with a URI of �/status� from a user agent that is not a MobiLink client, it will now respond with a 200 instead of a 404
776816 Under some conditions, the server may have crashed when trying to access the property TcpIpAddresses from an event. This has been fixed.
776845 If the UltraLite samples were stored in a folder whose path contains space characters, the UltraLite ESQL CustDB project does not build with Visual Studio. This problem has been corrected.
776895 In the Entity Framework Data Model Wizard 揅hoose Your Database Objects and Settings� dialog, the SQL Anywhere .NET Data Provider did not return stored procedure and function names in the 揝tored Procedures and Functions� list view for a case-sensitive database. This problem has been corrected.
776897 The Interactive SQL utiliy (dbisql) could have reported an internal error (OutOfMemoryException) when copying large result sets when the results were displayed as text. Now, a more user-friendly error message is displayed.

If dbisql runs out of memory when copying results, there are a couple of things that can be done:

1. When running the 32-bit version of dbisql, run the 64-bit version instead. It allows for a larger heap, and is less likely to run out of memory.

2. Export the data using an OUTPUT statement, or the "Export Wizard", rather than copying results to the clipboard.

776900 When using Internet Explorer to view results of some requests from the OData Producer, IE reported that it was unable to display the results due to a XML parsing error, or asked 揇o you want to open or save odata from localhost?� This has been fixed.

Note, this only affected results from some service operations when the output format was XML.

776911 The server may crash if an UPDATE on a table that had a publication used a cached plan. This has been fixed.
777043 If the Backup utility (dbbackup) was used to back up a database that had no transaction log, and the -n and -r switches were used, dbbackup would crash. This has been fixed.
777061 Fetch performance on cursors for which prefetch was enabled may have been a bit poorer that it should have been when the cursor was using near the prefetch memory limit (default of 512K per connection). This slowdown was more likely to have occured when using wide fetch (also called array fetches). This has been fixed so that the performance in this case is now improved.
777135 The version of OpenSSL used by all SQL Anywhere components has been upgraded to 1.0.1k. The FIPS libraries have been upgraded from OpenSSL FIPS 2.0.5 to 2.0.9.
777185 In extremely rare circumstances, on Unix the database server or a multithreaded client application could have hung on shutdown if there were multiple TCP/IP connections being accessed simultaneously. This has been fixed.
777187 Creating a proxy table to a HANA table with a large number of rows in the remote table would have taken a very long time. During this time, the SQL Anywhere server would have been locked and would not respond to request until the proxy table creation now much faster.
777200 Under rare circumstances, the server could have crashed when executing a positioned update. This has been fixed.
777370 The server could have crashed if there were unusual operations between a statement prepare and cursor open, as well as other connections performing DDL during the lifetime of the cursor. This has been fixed.
777385 When constructing certain round-earth geometries, the 32-bit server could have crashed. This was more likely for servers with the fix for Engineering case 765031. This has been fixed. There is no known workarounds.
777436 If an application made an external environment call, and if that external environment call returned with an open procedure cursor, then the server would have crashed if the application subsequently disconnected without getting the external environment to close the procedure cursor. This problem has now been fixed.
777478 The server may have crashed if user estimates in a query were placed in clauses other than the WHERE or ON clauses. This has been fixed.
777602 Like the majority of DDL statements, the CREATE EXISTING TABLE requires a catalog lock during execution. Any other server requests are suspended while the catalog is locked. However, the CREATE EXISTING TABLE statement was holding the catalog lock for longer than absolutely necessary. This has been fixed and creating a proxy table now locks the catalog for a much shorter duration.
777614 If the "Fixed list of IP addresses" option was specified when initializing a host (either when initializing the cloud, or when adding a new host) a message like the following would have appeared in the agent logs:

... dbcloudagent_poller_http_error message=[Error making HTTPS connection] code=4 reason=[Cannot resolve hostname or bad IP address]

This was a non-fatal error since the agent could continue working by polling the primary instead. This problem has been fixed.

777626 Specific DDL statements could have caused incorrect behavior when executed concurrently in a procedure statement. The incorrect behaviors include:

1. Server crash

2. Server assertion failure

3. Incorrect error message (for example, -946 "Result set not permitted in '%1'")

This has been fixed.

777686 In very rare cases a database corruption could have occurred if an ALTER TABLE statement was executed following a number of DELETE FROM statements. The corruption would be reported as assertion 200610 when dbvalid is run on the database. The corruption can be fixed by unloading and reloading the database or specifically by unloading the affected table, dropping the table, and then creating and reloading the table. This has been fixed.

--EOF--

  • 本文链接地址:http://www.dbainfo.net/sap-asa-cr-number-8.htm
  • 本文为dbainfo个人原创,请在尊重作者劳动成果的前提下进行转载;
  • 转载务必注明原始出处 : Sybase数据库技术,数据库恢复专家
  • 对《SAP SQL Anywhere的所有已知BUG列表(8)》有何疑问或见解,请在本文下方发表;
  • 对网站还有其他问题或建议,请提交在留言板,谢谢!
  • 目前还没有任何评论.
    :wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)