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

随着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
612094 An incorrect response length may have been recorded in the SQLAnywhere HTTP log for a long lived HTTP connection, such as a pipelined connection wacorrect, subsequent response lengths were cumulative. The problem occurred when HTTP logging was enabled and the @L LogFormat specified the logging of the response length (default). This has now been fixed.
612128 Clicking the "GENERATE/INSERT statement" menu item in the Results panel, when the row contained a long character column (e.g. more than 100K), the Interactive SQL utility could have taken a very long time to generate the statement. This has been corrected so thgat it now happens almost instantaneously.
612268 While rare, a CREATE VIEW statement could have caused a server crash. This has been fixed.
612269 The SQL Anywhere HTTP log did not allow a format option to specify the logging of the client port used in an HTTP request. Both the client IP address and port were required to demarcate the use of a specific connection within the log when a client made several keep-alive HTTP connections. The LogFormat protocol option has been changes sp that it now supports the "@J" format-string code to specify logging of the client port. The following LogFormat is recommended to include the logging of the client port since this will be the default in future releases:

@T - @W - @I:@J - @P - "@M @U @V" - @R - @L - @E

612295 Using the DBS connection parameter with a value that included quotes may have caused the connection fail. This has been fixed.
612301 If an error (such as "disk full") was encountered while extending a dbspace, it was possible that the dbspace would be corrupted. Subsequent startups may have reported assertion failure 201129 (file is shorter than expected), or one of several other assertion failures. This problem has been fixed.

Note that the problem did not affect growth of the transaction log.

612409 When connected to a multi-byte character set database, if an application attempted to create a proxy table to a remote table that had an underscore in its name, then there was a chance the server would fail the request with the error "the table specification '<location-string>' identifies more than one remote table". This problem would only have occurred if the remote had multiple tables whose names differed only by the character in the underscore location. For example, if a remote had tables named tab_1 and tabx1, and if the application attempted to create a proxy table to map to tab_1, then the server would give the "more than one remote table" error. This problem has now been fixed.
612462 Queries that contained a subquery that was rewritten by semantic transformations to flatten subqueries, could have failed with the error "Assertion failure 106104 (...) Field unexpected during compilation". This problem would only have occurred if the query block that was being flattened had a subquery in the SELECT list with outer references. This has now been fixed.

Note, a potential workaround is to modify the query so that it is no longer suitable for the semantic transformation that flattens the query block.

612491 When connected to an UltraLite databaseand trying to import table data from a database using the Import Wizard, a dialog would have been displayed asking to select a database name from an empty list of databases. The list of databases is no longer offered since the concept has no meaning when connected to an UltraLite database.
612617 If the row containing a particular unique value changed from one row to another, and then back again, snapshot transactions open before or during the updates might not return a row when expected, or return two copies of the expected row. This has now been corrected.
612641 The Deployment wizard would have failed to work properly on Windows Vista and Windows 7. The wizard would have claimed to complete successfully, but the resulting MSI was invalid. The wizard was attempting to create a temporary file in the Program Files directory, which is disallowed by Windows Vista and Windows 7. This has now been corrected.

A workaround for this issue is to run the deployment wizard as an administrator.

613078 Upgrading a database that did not have a userid named DBA would have failed, intentionally leaving the database in an unusable state. This has been fixed by removing unnecessary grants to the DBA user. A workaround is to create a DBA userid before upgrading and drop it after upgrading.
613079 Applications using the version 6.x or 7.x ODBC driver or SQL Anywhere interface library (DBLib), would not have been able to connect to a version 12.x server. Connection attempts would have failed with the error "Connection error: Found server but communication error occurred." The server has been fixed so that applications using these client libraries can now connect successfully.
613261 Executing a query like the following from SQL Server Management Studio (2005):

select * from saoledblink..SYS.syscollation;

would have failed with the error:

Msg 7356, Level 16, State 1, Line 1

The OLE DB provider "SAOLEDB.11" for linked server "saoledblink" supplied nconsistent metadata for a column. The column "collation_order" (compile-time ordinal 4) of object ""SYS"."syscollation"" was reported to have a "DBCOLUMNFLAGS_ISFIXEDLENGTH" of 0 at compile time and 16 at run time.

The problem occurred for BINARY(n) columns. The DBCOLUMNFLAGS_ISFIXEDLENGTH schema attribute was set true (0x10) at run time. This problem has been fixed.

613299 Queries involving indexes could return incorrect results, and using tools such as the Validate Database Wizard in Sybase Central, or the Validation utility, could have reported index corruption when there was in fact none. For this to have occurred, the index must not have been unique and there must be many consecutive rows with the same indexed value. This has been fixed.
613341 If an application that was connected using jConnect or Open Client, queried the metadata of a long nvarchar, nvarchar, nchar, date or time column, then the metadata returned by the server would have been incorrect. This problem has now been resolved.

Note, in addition to getting an updated server, an ALTER DATABASE UPGRADE must be execute on each database, to update the metadata for jConnect and Open Client applications.

613425 When running a non-upgraded version 10 or 11 database, the server could have crashed when a user was dropped. This has been fixed.
613426 A change was made to improve the performance of Watcom SQL procedural language (stored procedures, batches, triggers and events).
613429 An UltraLiteJ database with many committed transactions (more than the row maximum threshold) may have encountered a Null pointer exception during deletes and updates. This has been fixed.
613436 A client application running on Windows Vista or Windows 7, could have crashed just after disconnecting the last connection. Specifically, the crash could have occurred just after the client library DLL (such as the ODBC driver) was unloaded. This has been fixed.
613455 The SQL Anywhere Update Service could have recommended the incorrect bitness of a Windows EBF. For example, the Update Service could have recommended both bitnesses of the 11.0.1 Maintenance Release to customers of 11.0.0; or, it may recommended a 64-bit EBF to customers running 32-bit Windows. This has been corrected.
613637 Unloading a version 11 database using the Unload utility (dbunload) such that dbunload used its internal unload/reload mechanism (i.e. -ii), could have then caused the Translation utility (dbtran) to crash when scanning the new database's transaction log for particular tables (command line option -it).
613638 The default settings for the way results are displayed can now set. In the OEM.ini file, the following values in the "[dbisql]" section are now recognized:

defaultShowResultsForAllStatements=false

defaultShowMultipleResultSets=false

These lines, if present, control the default behavior for displaying results. In the "Options" window, these options are displayed in the "Results Processing" box on the "Results" tab when "SQL Anywhere", "UltraLite", or "Sybase IQ" are selected. The default for both options is "false".

An optional prefix can be used to limit the effect to a specific database type. If no prefix is present, the directive applies to all database types. The prefixes are:

SQLAnywhere. For SQL Anywhere

Ultralite. For Ultralite

SybaseIQ. For IQ

For example,

defaultShowResultsForAllStatements=true

would change the default for all database types to show results for all statements, but

SQLAnywhere.defaultShowResultsForAllStatements=true

would change the default only for SQL Anywhere databases. The defaults for Ultralite and IQ would be unaffected. If a directive appears both with and without a prefix, the prefixed one has precendence for the given database type.

These directives can be specified independently. If one is missing, its default value (false) is assumed.

Notes:

1. These lines control only the default values for the two preferences. The defaults are used only if no saved user perferences are found. The user preferences are saved each time DBISQL is run.

2. "defaultShowMultipleResultSets" does not apply to UltraLite because UltraLite statements cannot return more than one result set.

613642 It was not possible to set an HTTP status that was not explicitly supported (or known) by the SQLAnywhere server. This has now been fixed. Any three digit status code with an optional colon (':') delimited text message may now be specified.

Examples:

CALL SA_SET_HTTP_HEADER( '@HTTPSTATUS', '999:User Code'); // outputs status code with message: '999 User Code'

CALL SA_SET_HTTP_HEADER( '@HTTPSTATUS', '999'); // output status code only with no text message: '999'

Limitations/Recommendations:

- Status codes must be >= 100 and <= 999.

- A user defined status text message is not translated into database character-set when logged (log protocol option).

- It is recommended that user defined status messages are in English.

HTTP status code/message additions:

305 Use Proxy

307 Temporary Redirect

415 Unsupported Media Type

416 Requested Range Not Satisfiable

417 Expectation Failed

505 HTTP Version Not Supported

613669 Corrections and additions have been made to some of the SQL Anywhere OLE DB schema rowsets.

Changes to DBSCHEMA_PROVIDER_TYPES:

Changed CHAR type so that IS_FIXEDLENGTH is now FALSE (0).

Changed NCHAR type so that IS_FIXEDLENGTH is now FALSE (0).

Changed NUMERIC type so that IS_FIXEDLENGTH is now TRUE (1).

Changed DECIMAL type so that IS_FIXEDLENGTH is now TRUE (1).

Changed LONG NVARCHAR type so that IS_LONG is now TRUE (1).

As a result of these changes, "compile time" results will now agree with "run time" results (ref. MS Linked Servers).

Support was added for ST_GEOMETRY and TIMESTAMP WITH TIME ZONE types.

Changes to DBSCHEMA_COLUMNS:

The COLUMN_FLAGS column of the OLE DB schema rowset has been corrected.

The DBCOLUMNFLAGS_ISFIXEDLENGTH indicator is now set on for fixed length types (e.g., smallint, float, money).

The DBCOLUMNFLAGS_ISLONG indicator is now set on for LONG types (e.g., LONG VARCHAR).

Added support for ST_GEOMETRY and TIMESTAMP WITH TIME ZONE types.

Changes to DBSCHEMA_PROCEDURE_COLUMNS:

Added support for ST_GEOMETRY and TIMESTAMP WITH TIME ZONE types.

Changes to DBSCHEMA_PROCEDURE_PARAMETERS:

Added support for ST_GEOMETRY and TIMESTAMP WITH TIME ZONE types.

613672 The server may have crashed during query optimization for a statement with subqueries which were flattened (i.e., transformed into joins). At least one of the subquery must have contained a DUMMY table and the main query block must have required a DISTINCT to be done. This has been fixed.

An example:

select * from

product p

where exists (select 30 as id from dummy, product p2 where p2.id-1 > 30+p.id )

and p.id+1 = 301 and exists(select 1 from sales_order_items soi where soi.id > p.id)

613816 If an application connects using an older version of jConnect or Open Client, and subsequently fetches a Time or Timestamp value, then the server is required to round the fractional seconds portion of the Time/Timestamp value up to the nearest 1/300th of a second. For these older versions of jConnect or Open Client, the server would not always have properly rounded the fractional seconds portion up to the nearest 1/300th of a second. This problem has now been fixed.

Note that newer versions of jConnect and Open Client support microsecond precision, so no rounding to 1/300th of second will occur if an application uses these newer versions.

613838 When a row minimum threshold was specified that was too low (< 200), UltraLiteJ would have chosen 200, and then checked the maximum threshold. If the maximum threshold was less than the (adjusted) minimum threshold, it would choose minimum+500. This has been corrected so that it now accepts a minimum row threshold of 100 and if the maximum is less than theminimum, the maximum is set to minimum + 50.

Note that applications may be forced to use small threshold values if they have many transactions awaiting synchronization. This is fixed by synchronizing more frequently.

613984 Rebuilding version 9 or earlier databases using the Unload utility (dbunload) could have failed with the error "Unable to start specified database: autostarting database failed" if the old database had been run with database auditing. This has been fixed.
613986 Synchronizations could have failed after multiple updates and database closings. This has now been fixed.
613999 OEM Edition servers would have crashed when started with the -fips switch. This has been fixed.
614016 Attempting to rename a Maintenance Plan using the wizard would always have failed with the error "A maintenance plan with the specified name already exists in this database". The old and new names were not being tracked correctly by the wizard. This has been fixed.
614034 When a 9.0.2 QAnywhere client synchronized, the MobiLink server would have displayed the following errors:

Expecting 1 parameters in script, but only found 4: update ml_qa_global_props set modifiers = ?, value = ? where client = ? and name = ?

Unable to open upload_update .

This has been fixed by a change to the upload_update script for the table ml_qa_global_props, version ml_qa_2.

614064 UltraLiteJ databases created as File Write At End or In Memory, would not have allowed alter operations if there transactions with multiple operations on the same row.

For example:

Given a table Test that had synchronization disabled, after the sequence

INSERT INTO Test( num, val ) VALUES( 1, 0 )

UPDATE Test SET val = 2 WHERE num = 1

COMMIT

it would have no longer been possible to alter the schema of table Test. Attempts to do so would have resulted in UltraLiteJ Error[-121]: Permission denied: unsynced transactions

This has now been fixed.

614245 When more than one Relay Server Outbound Enabler (RSOE) in the same backend server farm used the same server id to connect to the Relay Server, the Relay Server would have reported that there was a conflict, and let the newer RSOE instance win over the existing RSOE connection. There was a small chance that the old RSOE connection may have reported the error "Internal error! Freeing already freed memory!" during the disconnect process. Although the memory manager in versions 11.0.1 2335 or higher of the Relay Server is immune from such memory problems, and will keep working normally, a fix has been made to further stop the cause of this memory problem in order to stop the internal error from occuring at all.
614247 The server may have crashed after query optimization of a statement with a parallel plan, for which the EXCHANGE physical operator must preserve the ordering of the rows from the input stream, and a prefilter predicate exists before the Exchange operator. This has been fixed.

For example, if the query below has the plan "p<xx> Exchange p<xx>", the output of the Exchange operator must preserve the ordering of the rows on "p.id" provided by the scans of the index "xx". This query crashed the server before this fix. The prefilter predicate is "now() > now()".

select * into #temp1 from product;

create index xx on #temp1(id);

select p.id from #temp1 p where now() > now() order by p.id;

614405 The server could have have an assertion, or crashed, when reinserting a deleted non-null value into a unique index. In rare cases, database corruption was possible. System and temporary table indexes were not affected. This has now been fixed.
614417 The MobiLink server could have crashed when processing a synchronization request from a client, if the client was older than version 10 and was syncing UUID columns. This has been fixed.
614432 The Information utility (dbinfo) will now show the CHAR collation specification, CHAR encoding, NCHAR collation specification and NCHAR encoding, instead of the old "Respect letter-case when comparing" and "Collation sequence" fields.

For example, the following two lines of dbinfo:

Respect letter-case when comparing: No ('A' equal to 'a')

Collation sequence: 1252LATIN1 (Code Page 1252, Windows Latin 1, Western)

have been replaced by:

CHAR collation sequence: 1252LATIN1(CaseSensitivity=Ignore)

CHAR character set encoding: windows-1252

NCHAR collation sequence: UCA(CaseSensitivity=Ignore; AccentSensitivity=Ignore; PunctuationSensitivity=Primary)

NCHAR character set encoding: UTF-8

which matches the output displayed by the Initialization utility.

614592 One of the values that could have been returned for the lock_type column of the sa_locks procedure was 'WriteNonPK', which is longer than the the char(9) column definition. This was corrected by shortening the 'WriteNonPK' value to 'WriteNoPK'
614625 The MobiLink client would have ignored the command line option -a. This has been fixed.
614632 In rare circumstances, calling the system function db_property() to retrieve a database property from a database other than the one connected to (for example, when calling sa_db_info()), may have resulted in invalid data being returned. This would only have occurred if the property being requested returned a string, and conversion between the character sets of the two databases was unnecessary. This has been fixed.
614778 When loading geometry values from an ESRI shapefile, the incorrect grid size and tolerance were applied during the loading process. This could have lead to geometries being improperly rejected with an error at load time. This problem primarily arose for round-Earth spatial reference systems and those with a non-default grid size or tolerance. This has been fixed.
614782 If the plan chosen for a query used a nested-loops outer join, and the cursor was used with a mixture of forward and backward fetches, it was possible for the server to return the wrong answer for the query. This has been fixed. A possible work-around for the problem is to use an insensitive or keyset-driven cursor type.
614805 Clicking the "Test Connection" button in the SQL Anywhere Monitor when creating a MobiLink resource would have caused the Monitor to hang. The MobiLink server log would have contained the errors: "<4> [-10004] Protocol version mismatch -- expecting 34 but received 49" and " "<4> failed reading command with id:1 and handle:26". This has been fixed.
614818 When deploying support for dbunload to a windows CE device, the following scripts were missing: unloadold.sql, optdeflt.sql and opttemp.sql. These are now deployed to the device.
614976 The Relay Server Outbound Enabler (RSOE) may not have relayed backend server responses when under a sustained high load of requests. The problem was more likely to occur when the network between the client and Relay Server (RS), as well as the network between the RS and the RSOE, were both very fast while the backend server machine was relatively slow in processing. Turning on high RSOE verbosity in such situation would have caused this problem to be more likely to occur. A fix has now been made in the RSOE to solve this problem.
615212 When computing an aggregate function such as AVG() or SUM(), it was possible for the result of the calculation to overflow the bounds of the data type used for accumulation, leading to an answer that was not numerically correct. Even if the option Ansi_integer_overflow was set to 'On', the overflow was not reported as an error. If AVG() or SUM() overflowed an INT type, then the argument to the aggregate can be cast to DOUBLE or NUMERIC to avoid the overflow (with a concomitant performance degradation). In specific conditions, an arithmetic operation could have caused a server crash. This has been fixed.
615239 A web services stored procedure did not automatically process query parameters for HTTP PUT and POST methods. This has been fixed.

Examples:

CREATE SERVICE echo ...

CREATE SERVICE echo_elem URL ELEMENTS ...

CREATE SERVICE echo_path URL ON ...

HTTP Requests:

PUT echo?id=1 HTTP/1.1 ==>

HTTP_VARIABLE('id') == 1,

HTTP_HEADER('@HTTPQUERYSTRING') == id=1

PUT echo_elem/one/two?id=1 HTTP/1.1 ==>

HTTP_VARIABLE('id') == 1,

HTTP_VARIABLE('url1') == one,

HTTP_VARIABLE('url2') == two,

HTTP_HEADER('@HTTPQUERYSTRING') == id=1

PUT echo_path/one/two?id=1 HTTP/1.1 ==>

HTTP_VARIABLE('id') == 1,

HTTP_VARIABLE('url') == one/two,

HTTP_HEADER('@HTTPQUERYSTRING') == id=1

615254 If a percent character "%" was used in a RAISERROR statement, then retrieving the error using sqlany_error() would have returned garbage characters for the percent character. This has been fixed.
615255 When run on Windows CE, the server may have reported an inaccurate reason when a file error occurred. A server that was using the ICU library (dbicudtnn.dll) could have reported a general I/O error if the database file did not exist. A server that was not using ICU could report that a database file did not exist error when a different file error occurred. This has been fixed.
615422 It was not possible to use Java or .NET scripts for the authenticate_file_upload event. This has been fixed.
615446 A "long" hex constant string in a SQL query would have been treated as being a CHAR() datatype, rather than BINARY() data. In this case "long" refers to a string which is longer than approximately one database page size after converting the hex to binary (ie, the original hex string is approximately two pages in length). This problem has been fixed.
615447 Queries containing procedure calls in the FROM clause may have failed to execute, or the procedure was not in-lined which may have resulted in very poor performance. For this problem to have occurred, the procedure must have contained common table expressions defined with the "WITH [RECURSIVE] ..." clause, and the procedure must have qualified to be in-lined into the query block in which it was used. This has been fixed.

For more information on in-lining procedures see "SQL Anywhere 11.0.1 � SQL Anywhere Server - SQL Usage � Query Processing � Query optimization and execution � Semantic query transformations � In-lining simple system procedures "

http://dcx.sybase.com/index.html#1101en/dbusage_en11/ug-optimizer-s-4906935.html

615448 Certain database objects, such as stored procedures, are stored in canonical form. When "long" CHAR or NCHAR constants in a SQL statement were transformed into canonical form, the canonical form could have been incorrect, such that the canonical statement could not be parsed, or that the original data would not be returned when it was parsed. A "long" constant in this context is one in which the internal representation is approximately one database page size in length or longer. This problem has been fixed.
615473 When installing the Japanese 10.0.1 3990 EBF, some of the characters in various buttons of the installer containing an unintelligible sequence of characters (mojibake). The character encoding used when compiling the installer was incorrect, this has been fixed.

Note, the installer for the 10.0.1 3976 EBF worked correctly.

615481 When doing a 64 bit install, if only the SQL Anywhere and Administration Tool features were selected, some operations in Sybase Central would have failed. This has been fixed.
615614 Dropping a login policy, or a synchronization profile, would not have also deleted the corresponding row in the system table ISYSOBJECT. This has been fixed.
615617 If an application connected via jConnect attempted to retrieve the column metadata of a result set that contained a varbit, long varbit, nchar, nvarchar long nvarchar, or uniqueidentifier column, then the column metadata would have been returned with an unknown datatype. This problem has now been fixed.
615627 When using snapshot isolation, the Validate utility (dbvalid), or the "VALIDATE DATABASE" statement, may have spuriously report the error "Database validation failed for page xxxx of database file". These errors would then have disappeared after a clean shutdown of the database. This has been fixed.
615655 For some types of page corruption, the Validate utility (dbvalid) could have reported incorrect page numbers. This has now been corrected.
615671 Commas appearing anywhere in an index hint would have been interpreted as index name deliminators. For instance, the hint INDEX([a, b], c) would have been interpreted to mean the indexes "a", "b", and "c", rather than an index named "a, b" and an index named "c". This has been fixed so that it is now possible to supply hints for indexes

with a comma in their names, provided the name is properly quoted.

615813 The Relay Server does not support running more than one Outbound Enabler per backend server if they are started with the same backend server id. If this limitation for a unique backend server id was violated, some traffic to that backend server may either have failed, or suffered slowness. This problem has been fixed. The Relay service to other backend servers is no longer affected by this issue. The second and subsequent instances are not functional.
615828 The Relay Server Outbound Enabler (RSOE) could have sporadically crashed on startup. This has been fixed.
615834 The REGEXP_SUBSTR function could have returned incorrect results when the start-offset parameter was specified. In particular, regular expressions with '^' (match start of string) may not have matched when they should have, and lookbehind assertions may have matched when they should not have. Also, specifying an invalid start-offset or occurrance-number, may have returned a match when it should not have. This has been fixed so that the start-offset specifies the beginning of the expression to match, and '^' will match the beginning of the expression starting at start-offset.
615855 The MobiLink client (dbmlsync) could have crashed on shutdown when run on linux systems.

This problem also affected applications using dbmlsync through the dbtools interface. They could have crashed when DBToolsFini was called. This has now been fixed.

615861 The Relay Server Outbound Enabler was over using memory for buffering upward data. This has been fixed.
615994 If a domain was created after editing columns in a table, then the newly created domain would not have appeared in the Table Editor's Data Type drop-down list until the table was manually refreshed by pressing F5. This has been fixed.
616015 The QAnywhere Agent could have failed with the error: "Internal error: Too many MESSAGE ... FOR CONNECTION messages". This has been fixed.
616017 The QAnywhere Agent would have failed to upgrade 9.0.2 message stores that were created with SQL Anywhere 9.0.2 builds 3654 and later. This has been fixed.
616031 On Unix systems other than Linux, JAR files were installed with 0700 permissions, which meant that they were only usable by the user who ran the install. This has been fixed so that executables, shared objects, and shell scripts are now installed with 0555 permissions, while the permissions of all other files will be 0444.

As a workaround, the following command may be run to fix the permissions of the JAR files:

find $SQLANY11 -name "*.jar" -exec chmod 444 {} \;

616038 If the Log Translation utility (dbtran) was run using both the -m (read log files from a directory) and -ir (range of log offsets) flags, the following error would have been reported:

Transaction log file '<logfile1>' overlaps with transaction log file '<logfile2>'

This has been fixed.

616040 When the Relay Server Outbound Enabler console was opened with high verbosity logging set, the Outbound Enabler performance could have been significantly degraded. This has been fixed by removing log information at verbosity level 1 and above from the console display, but leave them in the log file only. To restored the old behavior of displaying all information to the console, use the new -dl command line option.
616196 Older MobiLink clients (prior to Version 10) would have caused the server to log a Protocol Error, when attempting to restart a download. This has been fixed. Restartable downloads for older clients is not supported, so the server will now log the restart failure and send a status code to the client.
616214 The server allows the LOAD TABLE statement to be executed in a mode where the contents of the input file are recorded into the transaction log so that the original data source is no longer needed in the event of the database recovery. The logging of file contents in the transaction log can be triggered explicitly, e.g., if the WITH CONTENT LOGGING clause is used, or implicitly for certain forms of LOAD TABLE, e.g., when the USING CLIENT FILE clause is used. The LOAD TABLE statement could have failed with an error when executed from within a stored procedure if the user executing the procedure was different from the login user for the connection. This has been fixed so that the server now executes the LOAD TABLE statement correctly in these circumstances.
616221 Estimates of the number pages for tables and indexes in the cache, that were used by the optimizer, were not being correctly maintained, causing poor plan selection. This has been corrected.
616222 Comments were not being saved on sequence objects. This has been fixed.
616227 Connection attempts that used TLS would have failed with handshake failures on 64-bit Mac clients. This has been fixed.
616231 An HTTP/SOAP request may have caused the SQL Anywhere server to crash under certain circumstances. This has been fixed.
616239 Under sustained high load from a Relay Server, the Outbound Enabler may not have performed well enough, resulting in client timeouts. A performance improvement has been made to the Outbound Enabler to correct this problem.
616385 When making continuous ODBC connections and disconnections, using the ANSI entry points to SQLConnect() and SQLDisconnect(), a memory leak would have occurred in the application. The UNICODE versions of SQLConnect() and SQLDisconnect() (i.e., SQLConnectW() ) were not affected by this problem. The process heap will continue to grow as the application loops. This problem has been fixed.

See also Engineering case 608095.

616395 The system procedure sa_split_list() did not work as expected when a multi-character delimiter was provided, and the string to be split was shorter than the delimiter. No rows were returned, whereas the expected result was a single row containing the string to be split. This has been fixed.
616435 When using the Create Database wizard to create a database on the local machine while having no servers running the local machine, the newly created database would have been started on the server, but would not have been the local machine's default server. This has been fixed.
616437 Selecting a server's "All Connections" tab could have caused an error and fail to display the list of connections, if Sybase Central was connected only to the server's utility database. This has been fixed.
616635 Header files for external libraries to be used with full text searching were missing from the installed software. This has been fixed.
616637 A query in which a SELECT FROM DML DTB appeared within one of the query blocks inside a query expression (a UNION, EXCEPT or INTERSECT query) could have given the error "Update operation attempted on non-updatable query" (SQLCODE -192). This has been fixed.
616654 Certain client-side error messages in a dblib application could have been returned in the OS character set, rather than the character set that the application had chosen for the connection. The affected messages were typically generated by an attempt to use a connection that had terminated abnormally, in which case dblib used the OS character set because it lost track of the connection's character set when the connection terminated. Of course, if the connection had chosen to use the OS character set the problem would not be noticed. This problem has been fixed by keeping track of the character set of the last connection that was used with each SQLCA and returning error messages in that character set. Dblib tracks any change to a connection's character set when communicating with a database server which is version 11.0.0 or newer. When connected to servers earlier than version 11.0.0, dblib is unable to track the character set of a connection if the application calls db_change_char_charset() with a character set name of "none" (ie, equivalent to database CHAR character set) but it will track the change when the character set is changed to an explicit name (eg "UTF-8").
616656 When using the SQL Anywhere PHP module, and binding a null numeric value to a statement with sasql_stmt_bind_param_ex, the null value would have been converted to a 0. This resulted in a 0 being passed in the statement instead of the desired null value. Resetting the variable to null after binding would have given the desired behavior. This has now been fixed.
616657 On BlackBerry devices and simulators, very large tables/databases (many rows) could have resulted in an OutOfMemory error, even when lazy loading and row limiting was enabled. This has been fixed.
616829 If the SQL Remote Message Agent (dbremote) connected to a database that had remote or consolidated users defined, but did not have a publisher defined, then dbremote would not have reported any errors, but would have simply reported "Execution Complete". This has been corrected so that dbremote will now report an error indicating that no publisher was defined in the database.
616956 When clicking the 'View Code' button in the breakpoints dialog, the error "The source code could not be displayed for the <procedure/event/trigger> because the database filter is excluding it." may have been shown. This has now been fixed.
616981 An ALTER VIEW statement that changed the view definition, would have silently dropped any INSTEAD OF triggers on the view. This has been fixed so that the server will now return the error "Operation failed because table or view '%1' has an INSTEAD OF trigger".
616985 If an application attempted to fetch long string data from a proxy table, and the ODBC driver being used to connect to the remote server did not support UNICODE entry points, then there was a chance the fetched data would have been missing some characters. This problem has now been fixed.

Note, there are very few ODBC drivers that do not support UNICODE entry points. As a result, this problem affects a very small number of applications that use remote servers.

616997 Relay Server Ooutbound Enabler could have been slow in connecting to a backend server when it used a host name, instead of a dotted IP address, in the -cs option. This connect performance issue has been fixed. Using a host name in the -cs switch should no longer causes performance issues. The workaround is to use dotted ip address.
617154 The Interactive SQL utility (dbisql) could have failed to connect when using a Japanese DSN name that was passed as a connection parameter. Double-byte characters were being mangled when provided in a parameter to dbisql. This has now been fixed.
617161 An HTTP request requiring certain character set conversion criteria may have caused the SQL Anywhere server to crash. This has been fixed.
617165 INSTEAD OF triggers on views were not being unloaded by the Unload utility (dbunload). This has been fixed.
617169 If a query contained a predicate "a = b" for geometry values a and b, it was possible in some cases for the server to crash. This has been fixed.
617177 On Solaris SPARC systems, the 32-bit SQL Anywhere libraries were linked against libC.so.5, the compatibility libC variant, even though the libraries were not compiled in compatibility mode (i.e., -compat=4 was not used when compiling the libaries). A C++ application that was not itself linked against libC.so.5 could have crashed when trying to load these libraries. The libraries are no longer linked against libC.so.5 and now are only linked against libCrun.so.1. C++ client applications compiled with the -compat=4 compatibility flag, or linked against libC.so.5, are not supported.
617178 The asynchronous command execution ( BeginExecuteReader and BeginExecuteNonQuery ) could have been blocked by exclusive table locks. This problem has been fixed.
617203 If an ABS() function call was used in a stored procedure, batch statement, or simple SELECT, INSERT, or UPDATE statement, then it was possible for the function to report an overflow error. For this to occur, the argument to the ABS() function must have been a NUMERIC or DECIMAL argument with a precision and scale different from the values specified by database options. This problem has been fixed.
617205 If a geometry is defined in a round-Earth spatial reference system, attempts to use predicates such as ST_Within() and ST_Contains() should result in an error, as these are not supported on round-Earth geometries. In some cases though, rows could have been rejected before an error was generated, giving the appearance that the predicates were in fact supported. This has been fixed.
617206 Attempting to compute ST_ConvexHull() or ST_ConvexHullAggr() could have given an error (Value xxxx out of range for coordinate x) if one of the geometries was empty. This has been fixed.
617219 If an application connected using Open Client 15.5, and then subsequently attempted to fetch a Time or Timestamp value, then the fetch would have failed with a protocol error. This problem has now been fixed.

Note that this problem does not affect versions of Open Client prior to 15.5.

617396 On 32-bit systems that support dynamic cache sizing, it was possible to set a maximum cache size for the server that would have left insufficient address space for other server operations. The server could then have failed to start, or could have experienced other unpredictable failures. The 32-bit server now automatically reduces the maximum cache size, as well as the initial and minimum cache sizes if necessary, so that at least 512MB of address space is left free for use outside of the cache. On Windows, a 32-bit database server will be limited to a conventional cache of about 1.5GB, 2.5GB or 3.5GB depending on the OS version.

To specify a maximum cache size that will leave less than 512MB available, the new "-chx <size>" option can be used instead of "-ch <size>". Note, however, that the use of -chx is strongly discouraged unless great care is taken to evaluate what cache size can safely be used in a specific installation. To use very large caches, the use of 64-bit software is recommended.

On 64-bit systems, address space is extremely large and -ch and -chx are equivalent but -ch is preferred.

617397 By default, the OLE DB provider indicates, through a property settting, that it does not support returning multiple result sets, although the provider is capable of doing so. An undocumented connection option "ASA Multiple Results=TRUE" will enable the returning of multiple result sets. The provider has been changed so that returning of multiple results sets is now supported by default. More specifically, DBPROP_MULTIPLERESULTS is now set to DBPROPVAL_MR_SUPPORTED by default. If desired, the connection option "ASA Multiple Results=FALSE" can be used to change the property value to DBPROPVAL_MR_NOTSUPPORTED. However, there is no known benefit to using this option.
617469 Execution of the function ST_Boundary() on a collection was including points that should not have been included. The standard states that if a point is included in the boundary of an even number of elements in a collection, then it is not actually part of the boundary for the collection. These were being included incorrectly. This has been fixed.
617470 When a set operation generated a CircularString, it was output as a LineString. It did not interpolate it, but simply output the control points as LineString control points. This has been fixed.
617606 Queries using INTERSECT and EXCEPT that were executed with parallel physical operators (e.g., HashIntersect or MergeIntersect), may have returned incorrect results. This has been corrected so that INTERSECT and EXCEPT operators will not be executed in parallel.
617613 If a table was locked by a connection using LOCK TABLE ... WITH HOLD IN EXCLUSIVE MODE and then it was dropped without an intervening commit or rollback, there was a chance that the server could have crashed when the connection disconnected. This has been corrected.
617619 If multiple backup statements for the same database were executed concurrently with the WAIT BEFORE START option specified, and there was at least one connection with uncommitted operations, the server could have appeared to hang or run very slowly. This problem has been fixed.
617638 Under some situations, the server could have crashed while processing an ST_Transform() method to convert a geometry value from one spatial reference system to another. This has been fixed.
617640 Use of a timestamp that had a number of seconds with more than 9 digits after the decimal place could have yielded unexpected results.

For example:

select datepart( ms, '14:44:33.9876543211' )

would have returned 128, instead of the expected result of 987.

This has been fixed by truncating the number of seconds in a timestamp at 9 decimal places before it is used.

617662 If an application connected to a case sensitive database executed a remote query that contained a Group By clause, and one of the columns referenced in the Group By had a different case than the column reference in the select list, then the server would have incorrectly failed the query with error -149 "Function or column reference must also appear in a GROUP BY."

For example, the following query would have failed:

SELECT test.Column1 FROM proxy_t test GROUP BY test.column1

whereas the following queries:

SELECT test.column1 FROM proxy_t test GROUP BY test.column1,

and

SELECT test.Column1 FROM proxy_t test GROUP BY test.Column1

would have succeed. This problem would only have occurred if the local database was case sensitive and proxy_t was a proxy table. This has now been fixed.

617699 The message "Statement interrupted by user" was not being returned after a user canceled a command. This problem has been fixed.
617804 Attempting to execute an INSERT statement with the WITH AUTO NAME clause could have caused the server to crash. This has been fixed.
617811 If a database server was started with many databases (e.g. 16) that were configured for database mirroring, the mirror server could have hung, causing the primary server to also hang until the mirror server was stopped. This has been fixed. A workaround is to increase the value for the -gn option from its previous setting (default 20) to a value 2 times the number of mirrored databases.
617834 A query with a FULL OUTER JOIN without an ON condition must be interpreted as a KEY FULL OUTER JOIN, but this was not the case. This has been fixed.
618014 The TableViewer ADO.Net sample application queries SYSTABLE to determine the table list to display. That query would have incorrectly returned text index tables, if defined, which cannot be directly manipulated. If a query was subsequently issued using a text index table, the error SQLE_TEXT_CANNOT_USE_TEXT_INDEX would have occurred. The query has now been rewritten to only display base tables.

Additional changes to the application were also made to improve usability. First, functionality that required an active database connection such as the Execute button are disabled if there is no active connection. Second, a simple SELECT statement is generated based on the table selected from the table list control.

618017 In some cases, geometry operations were performed with the wrong tolerance or grid size. In these cases, the incorrect tolerance/grid size of 1e-6 would have been used instead of the values from the associated spatial reference system. In certain cases, this could have lead to incorrect answers being returned. This has been fixed.
618049 Attempting to execute an ATTACH TRACING statement with a LIMIT clause would have failed with a syntax error. This statement can be invoked directly, or by the Application Profiling Wizard or Database Tracing Wizard in the SQL Anywhere plugin for Sybase Central. This has been fixed.

Note, this can be worked around by setting the reserved_keywords option to 'limit'.

618100 When loading from an ESRI shapefile, the geometry values were not converted to the geometry type of the target column. This problem could have lead to geometries of an inappropriate concrete type being stored in a column. This has now been corrected.
618212 If an application connected using the iAnywhere JDBC driver, and then subsequently called one of the read() overloads of ResultSet.getBlob().getBinaryStream(), if the blob value was a non-NULL zero length long binary value, then the read() method would have incorrectly returned 0, instead of -1 to signal the end of the input stream. This problem has now been fixed.

Note, this problem was introduced by the changes for Engineering case 609739.

618244 In the Options dialog, when disabling or enabling the fastlauncher checkbox, the "Configure..." button was not disabled or enabled as appropriate as well. This has been fixed
618257 In some cases, operations on long strings (blobs) could have leaked memory in the main heap. This memory would not have been reclaimed until the server was restarted. In order for this problem to have occurred, the blob must have been at least 8 database pages long, and must have been accessed using a random-access interface such as byte_substr() with a starting offset of at least 3 times page size. This has been fixed.
618275 If a table contained a spatial column with spatial indexes, then it was possible in very specific circumstances for the server to hang when committing or rolling back updates or deletes to the table. This has been fixed.
618276 The st_geometry_describe_type option previously supported 'xml' as a setting. This is no longer permitted.
618278 A transaction log, which contained any sequence operations, would have caused the server to crash if it was later reapplied (with the -a option). This has been fixed.
618279 If two or more sequences were used in the same statement, only one would be evaluated, and would supply its results to all sequence references. This has been fixed.
618423 When a download exceeded 4K is size, and the page size had been set to greater than 4K, the synchronization would have failed, possibly with an ArrayIndexOutOfBoundsException. This has been fixed.
618459 If a primary server (S1) was somehow frozen for long enough that its connections exceeded the liveness timeout, and then exited the frozen state, the loss of its connection to the mirror server would cause it to send a stale status to the arbiter which should have been disregarded, but was not. Restarting S1 would result in it attempting to become the primary server if a connection to the second mirror server (S2) could not be made, yielding either two primary servers or an alternate server name conflict. This has been fixed. Stale state information will now be disregarded when received.
618587 An ALTER DATABASE CALIBRATE DBSPACE TEMPORARY may have caused the server to fail assertion 200501. This has been fixed.
618639 When viewing the Application Profiling "Details" pane for a large trace, the pane could have taken a very long time to paint. This has been fixed. Although the pane may still take several seconds to paint, it should be two orders of magnitude faster.

Note, users who do not have this fix can still view the underlying data by manually by querying the sa_diagnostic_* tables as described in the documentation.

618644 Some Round Earth geometries (geometries with SRID=4326) could have been created incorrectly, or failed to be created, if the constructor that used other geometries was used. This has been fixed.
618655 If data in a CHAR or BINARY column all had the same first 32 bytes, the quality of statistics on the column would have been poor. String histograms in version 10 and later databases are generated with hash keys using the first 32 bytes of the CHAR or BINARY string. This problem has been corrected by generating hash keys using the first 255 bytes of the string, so that different strings will more likely have different hash keys.
618766 If database mirroring was attempted using a database created prior to version 12 that had not been upgraded, the server would have crashed on startup. This has been fixed. A workaround is to upgrade or rebuild the database.
618804 If a LOAD TABLE ... WITH CONTENT LOGGING statement was executed in a database mirroring environment, and the mirror server was then stopped, restarting the mirror server may have failed with:

assertion 100904: failed to redo a database operation - Error: Table 'sa_load_table_data_X' not found

This has been fixed.

Workarounds for this problem are to add WITH CHECKPOINT ON to the LOAD TABLE statement (which makes the problem much less likely to occur, but does not completely eliminate it), or to use WITH ROW LOGGING instead.

618967 The Interactive SQL utility (dbisql) would have crashed when attempting to export a binary value using an OUTPUT statement with the HEXADECIMAL OFF or HEXADECIMAL ASIS clause. This has been fixed.
618972 The J2ME Record Store did not record page reads or writes. This has been corrected.
619037 If an application opened multiple database metadata result sets, and the application closed the metadata result sets appropriately, there was still a chance that the iAnywhere JDBC driver would have closed one of the open metadata result sets, even though the application had not reached the limit of 3 metadata result sets open at any given time. This problem has now been fixed.
619038 When running an install created by the 12.0 Beta deployment wizard, it would have recommended the SQL Anywhere 11 folder as the default install location. This has been corrected to default to Program Files\SQL Anywhere 12.
619039 The Execute Query menu item was enabled when in the debugger and not at a breakpoint. This has been fixed.
619040 On Windows systems, the -oe server command line option was ignored if -qi or -qw were also specified. This has been fixed.
619054 If the execution of a DELETE statement involved remote tables, and the DELETE statement could not be handled in full passthru, then the server could have failed assertion 201501 "Page for requested record not a table page or record not present on page". This problem has now been fixed, and a proper error message is returned.
619055 If the OS/locale charset did not match the database charset, the contents of the msg_database column in the result set from the sa_server_messages() system procedure would have been mangled. This has now been fixed.
619056 The server could have crashed while building a text index on very long binary or string values. This has been fixed.
619113 In very rare timing depended circumstances, the server may have crashed when querying connection properties for a connection in the process of disconnecting. This has been fixed.
619128 The server could have failed an assertion, or returned a spurious error, if a query used a keyset cursor or if a keyset cursor was implicitly used in the processing of a DELETE or UPDATE statement. For this to have occurred there must have been concurrent updates (with respect to the lifetime of the keyset). This was most likely to have happened if a global share by all temporary tables was involved. If no temporary tables were involved, only DELETE statements were likely to cause issues. The error most likely to be seen was 'unable to find in index'; assertions included 101412 and 200502 (among others). This has been fixed.
619138 If an embedded SQL application fetched into a SQLDA with a negative sqllen field in a SQLVAR of type DT_VARCHAR, DT_NVARCHAR or DT_BINARY, the fetched value could overrun memory and cause dblib to crash. A negative sqllen could occur if a positive value greater than 32767 was assigned to the sqllen field, since it is 16 bit signed short.

Also, fill_sqlda could have filled a sqlda with negative sqllen values for the types DT_VARCHAR, DT_NVARCHAR or DT_BINARY with input sqllen values of 32765 or more.

This has been fixed so that the error "Invalid sqllen field in SQLDA" is returned, and fill_sqlda never fills with a negative sqllen value.

619145 If a query contained a spatial join between two geometry columns that were compared using a relation that was not symmetric (such as ST_Covers), the query could have returned the wrong answer. In order for the wrong answer to be returned, a spatial index must have been used to compute the join. The result set would have missed rows from the index that should have been returned. This has been fixed.
619190 A base table with publications was not allowed to be used in any parallel access plan. This has been fixed. Now, a table with publications cannot be used in a parallel plan of a statement if the table is updatable in that statement, and it has publications.
619191 In some cases, operations that interpolate circular strings to linear segments could have generated duplicate points if the circular string contained more than 3 control points. For example, the following circular string could have generated a duplicate point (20,20) in the result:

CircularString (-20 -20, 20 -20, 20 20, -20 20, -20 -20)

The duplicated points might not have been noticed, because operations that input a curve drop duplicated points. The extra point could be detected in the output of ST_AsText('version=1.1') though. This has been fixed.

619195 Generating an MSI install using the Deployment Wizard, should have included these files:

IANYWHERE.MOBILINK.CLIENT.DLL

IANYWHERE.DATA.SQLANYWHERE.DLL

but they were not included in the assembly/v2 directory.

These files were being deployed directly into the GAC, but were not being put into the assembly/v2 directory. This has been corrected, and they are now installed into both locations.

619253 Executing any query in the Query Database dialog when debugging and at a breakpoint, would have always displayed the error "Invalid plan.". Showing a plan while debugging is not required so the Plan button has been removed.
619254 If a database had been initialized with the UCA collation sequence, and to respect accent sensitivity on all UCA string comparisons, it was likely that operations on tables without a SUBSCRIBE BY clause in the publication definition would have failed to replicate. No errors would have been reported, but operations that should have replicated would not have been sent. This has now been fixed.
619257 When loading string statistics from a database prior to version 12.0, into a version 12.0 database, the string histogram was created but not initialized. In some circumstances, this could have caused the Unload utility (dbunload) to fail. This is fixed by not creating the string histogram when old string statistics are being loaded.
619273 On Linux systems, Sybase Central would have hung on start-up when loading the UltraLite plug-in. This has been fixed.

As a workaround, automatic loading of the UltraLite plugin can be disabled by editing the file "$HOME/.sybase/Sybase Central 6.0.0/.scUserPreferences600" and changing the line

"ProviderData/ultralite1101/Autoload=true" to read "ProviderData/ultralite1101/Autoload=false".

619301 If the database server was launched by dbspawn and it couldn't access a database file due to insufficient permissions, dbspawn would have displayed the error "Specified database file already in use". This has been fixed. It will now display "Database cannot be started -- Access is denied".
619338 Attempting to execute a SELECT statement that referenced a stored procedure in the FROM clause could have caused the server to crash. This has been fixed.
619357 When an application attempted to make an external environment call, there was a very small chance the server would have crashed if the external environment for that connection shut down at exactly the same time as the application made the external environment call. This problem has now been fixed.
619359 A NullPointerException was possible when there was a small difference in row-limitation thresholds (see ConfigPersistent.setRowMinimumThreshold, setRowMaximumThreshold). This has now been corrected.
619360 UltraLiteJ could not have created a database in BlackBerry internal flash on some models, such as 8300, 9700. This was due to a problem in the BlackBerry software. A solution was found that was not impacted by the bug.
619388 When using Sybase Central's fast launcher, the timeout setting was ignored and the launcher continued to run. This has been corrected.
619552 Queries that used indexed snapshot scans could have returned extra rows. This has been fixed. See also Engineering case 612617.
619558 When using the "Ja_JP" or "JA_JP" locales on AIX, SQL Anywhere incorrectly determined that the OS character set was EUC-JP, whereas AIX actually uses IBM-943 (a.k.a "Windows-31J" and "windows-932") and UTF-8 respectively for those locales. The "ja_JP" locale on all UNIX platforms uses EUC-JP. On AIX 4.2 and earlier, AIX used the IBM-932 character set for the Ja_JP locale. SQL Anywhere does not support AIX 4.2; it does not support the IBM-932 character set which is significantly different from the Windows-932 / Windows-31J character set; and it does not support the "Ja_JP.IBM-932" locale that is available on currently supported versions of AIX. This problem has been fixed.
619595 The SQL Anywhere Optimizer now has a new source type for the selectivity estimations of atomic predicates of the form "T.X = R.X", namely JOIN. A selectivity estimation has the "JOIN" source type if it is computed using (1) Primary Key - Foreign Key referential integrity constraints; (2) unique constraints; (3) join histograms. The SQL Anywhere Optimizer uses selectivity estimation sources when redundant predicates are present in a query. Different sources have different qualities, hence predicates with better sources are used when competing predicates are present.
619596 Partial index scans covered by the same subset of predicates have now normalized cardinality estimation during optimization. Before this change, it would have been possible for partial index scan I1, covered by the predicates {p1,p2, .. pn}, to have had an estimated cardinality greater than another partial index scan I2 covered by a proper subset of predicates P of the set {p1,p2, ..., pn}. This has been fixed.
619597 Predicates of the form "(p11 and p12 and .. ) OR (p21 and p22 and ... ) OR ( ...)" can be used for multi-index partial scans if for each term "(pi1 and pi2 and ... )" an intersection of indexes can be built. The SQL Anywhere Optimizer failed to build an index scan for a term "(pi1 and pi2 and ... )" if all the predicates can be used in a single index scan.

For example:

select * from T where (T.X = 10 and T.Y = 20 ) OR ( T.Z = 30 and T.W = 40)

create index XY on T(X, Y)

create index ZW on T(Z, W)

A possible access plan is the union of the index scans: T<XY> UNION T<ZW>.

619613 The ODBC functions SQLPrimaryKeys() and SQLForeignKeys() would have returned an incorrect name for the primary key identifier (PK_NAME). It should return the PRIMARY KEY constraint name, but was returning the table name (the "default" primary key name). This problem has been fixed.
619699 A full text index built on data containing multibyte characters could have contained incorrect characters when an external prefilter and/or term breaker library was used. This has been fixed.
619719 ADO.Net client applications could have hung in very rare circumstances when fetching data readers. This problem has been fixed.
619728 If rebuilding a database failed for some reason, the Unload utility (dbunload) would have output some unnecessary information to unprocessed.sql. This has been fixed.
619746 IS NOT NULL predicates were incorrectly being generated for expressions which cannot be null, that is for the null-supplying side of OUTER JOINs. These extra predicates may have resulted in less than optimal access plans. This has been fixed.
619758 When connected to a database running on a Windows Mobile (Windows CE) device, if the database's Overview tab was selected, then Sybase Central would have crashed. This has been fixed.
619911 Executing a query of the form:

SELECT ... FROM dirTab WHERE file_name='...'

where dirTab is a directory access table, then the server would have incorrectly returned a result set in cases where the specified file_name extended beyond the subdir limit of the directory access server. This problem has now been fixed and a proper empty result set now gets returned for file names that violate the subdir limit.

619926 Stored procedures that contained simple queries over a single table (or the implied DUMMY table), that were run many thousands of times by the same connection, may have consumed more CPU after many thousands of executions. This problem would only have occurred if the same connection executed the same queries in a procedure more than 65000 times before disconnecting. This has been fixed.

A workaround is to periodically issue an inconsequential DDL statement to the server (for example, CREATE TABLE FOO(id int); DROP TABLE FOO). This will flush the plan caches and allow each connection to use fully-cached plans for these simple statements.

This issue had no impact on statements involving more than one table, or on statements that are not subject to plan caching.

619937 An embedded SQL application that attempted to fetch into a sqlvar of type DT_VARCHAR, DT_NVARCHAR or DT_BINARY, with a negative sqllen, could have crashed due to a memory overrun. A negative sqllen with these types is invalid and should never be passed to DBLib. DBLib has now been fixed to make the memory overrun less likely.
619950 The Unload utility (dbunload) was failing to add the length information for VARBIT user domain definitions in the reload.sql file. This has been fixed.
619976 The server could have crashed when executing an aggregate function that operated on string data when the Group By operator was forced into a low-memory strategy. This has been fixed.

A workaround is to increase the amount of memory available to the server.

620095 Several stability problems existed with parallel queries when using low-memory strategies, which could have lead to server hangs or crashes. These have been fixed. A workaround for these problems is to disable parallelism by setting the option MAX_QUERY_TASKS=1 for all affected queries.
620110 Under rare circumstances, a crashed database could have failed to recover with the message:

"Unable to start specified database: Cannot use log file '%1' since it is shorter than expected".

No data was actually been lost, but the log metadata would have needed to be patched by hand to allow the database to recover. This problem, while very rare, was more likely on systems with very large transactions running on a small number of connections. This has been fixed.

620136 The SQL Anywhere OLEDB provider's result sets for PRIMARY_KEYS and FOREIGN_KEYS did not show the correct constraint name (PK_NAME column). Instead, they listed the table name. This problem has now been corrected.
620253 Permission checking for materialized views was being incorrectly done in some cases, resulting in errors, for example: "Assertion Failed 102907 (11.0.1.xxxx) Could not generate triggers for immediately materialized view". This has been fixed.
620287 The SQL Anywhere OLE DB provider would have leaked memory if the InsertRow method was called with no row handle return pointer.

For example,

        HRESULT hr = rowset::InsertRow( hChapter, hAccessor, pData, NULL );

would have resulted in a memory leak, since phRow (the 4th argument) is NULL. This problem may have occurred when using the provider with SQL Server Integration Services (SSIS).

This problem has been fixed.

620289 If the length for a data column was described as SQL_NTS (-3), the SQL Anywhere OLE DB provider would not have computed the correct length for the column on 64-bit platforms. This problem has been fixed.

Note, this problem was seen with SQL Server Integration Services applications on 64-bit Windows platforms, it does not appear in ADO applications.

620324 The server may have incorrectly set the transfer-encoding when processing an HTTP request that failed with a SQL error. The problem may have occurred when the SQL error was generated from within a sub-select. This has been fixed.
620474 If the primary server (S1) in a database mirroring environment was running in a VM and the VM was paused or otherwise inactive for sufficient time that the mirror server's connection to S1 was dropped, causing a failover to the mirror (S2) , then when S1 was resumed it would not have realize that a failover has occurred and would have continued to act as a primary. This has been fixed.
620496 When deploying a synchronization model to a new remote database, if the remote database schema had multiple foreign keys to multiple non-primary key columns in a table, a deployment error could have occurred with the following description:

"Error for: Method makeUniqueConstraints threw exception for reference $HELPER in template script-defs\remote.vm"

This has been fixed.

620753 Plan Viewer displays wrong information on nodes if the plan consists >= 4 nodes
620795 The function count_set_bits may have returned a number that was too large, if a bitwise NOT operation had previously been applied to the operand. This has been fixed.
620977 If many databases were started for mirroring on a single server, the server could have hung after running for 30 minutes or more. This has been fixed.

See also Engineering case 617811.

620981 The Relay Server State Manager (rshost) would have crashed on Linux systems when run with no parameters. This has now been fixed.
620985 The MobiLink server would have reported the error, ".NET CLR Host encountered unexpected error." (SQLCODE -10167), instead of error, "Assembly '%1!s!' does not contain '%2!s!'" (SQLCODE -10172), when a .NET method could not be found. This has been fixed.
621019 In the new dashboard-based interface for the SQL Anywhere Monitor, it was found that the menu buttons for customizing a dashboard and widget were sometimes too difficult to see; particularly when the user is new to the Monitor. In an effort to address this issue, several changes have been made to the Monitor's web-based interface to facilitate the user's recognition of these menu buttons. The most noticeable change is that the dashboard's customize menu button now includes the text "Customize". As well, the old "configure" menu options in both the dashboard and widget customize menus has been renamed to "settings" to avoid confusion between "customizing" and "configuring". Also, in an effort to make the customize menus "pop" more, the menu buttons will now take on a highlighted look when the user mouses over any part of the widget/dashboard title bar; instead of just when the user mouses over the menu button, as it was previously. As a further visual indicator that a widget can be dragged/moved, when the user mouses over the widget title bar, the mouse cursor now changes to a "grabbing hand" cursor.
621038 Executing an ALTER USER statement with LOGIN POLICY clauses, on a database created with version 10.0.1 and not upgraded, could have caused a server crash. This has been fixed.
621121 If all of the following conditions were true, the result set for a procedure would not have been defined properly after a rebuild:

- procedure P1 generates a result set using a SELECT which references another procedure P2 in the FROM clause

- P1 did not include a RESULT clause defining the result set

- the procedure id of P1 was less than that for P2

This has been fixed.

621159 Archive backups and databases restored from archive backups could have been corrupt. This has been fixed.
621162 A SQL Anywhere 'RAW' web service having been defined with AUTHORIZATION ON, would have failed to the service when it had an AS NULL statement. This has been fixed.

Note, service types: HTML, XML, RAW, JSON may contain a NULL statement only with AUTHORIZATION ON, DISH services always contain a NULL statement and SOAP services must contain a (non-NULL) statement.

621179 When installed on a Mac OS X system to a path with MBCS characters, launching Sybase Central from Finder for the first time would have failed to register the plugins. The following error would have been given:

The SQL Anywhere 12 plug-in could not be loaded because it uses components that are not accessible. Please change the classpath in the plug-in properties.

java.lang.ClassNotFoundException: ianywhere.sa.plugin.SAPlugin

This has been fixed.

Workaround 1: Launching Sybase Central from Terminal would correctly register the plugins.

Workaround 2: Set the LANG environment variable in the Finder's environment. To do this, add the LANG environment variable to ~/.MacOSX/environment.plist, log out, then log back in.

621186 When launching Sybase Central from Finder on Mac OS X systems, the Unload data wizard would have incorrectly unloaded Multi-byte Character Set data. This has been fixed.

Note, launching Sybase Central from Terminal would correct the problem.

621318 ST_CircularString arcs that contained an intermediate point that was collinear with the start and end points, but was not on the line segment between them, incorrectly passed trivial validation. This has been fixed.
621443 If a server was asked to make a very large number of external environment calls at the same time, then there was a small chance the server would become unresponsive for 30 or more seconds. This problem has now been fixed.
621504 The exception System.NullReferenceException could have resulted when using the SQL Anywhere CE Deployment Wizard (cedeploy) on 64-bit Windows to deploy SQL Anywhere to a Windows Mobile device. This problem has been fixed.
621636 If a call to an HTTP client procedure failed, the server could have leaked memory. This has been fixed.
621652 If a server was asked to close a large number of connections that had at some point in time made calls to an external Java environment, then there was a chance the external Java VM would have leaked memory if all the connection close requests occurred at the same time. This problem has now been fixed.
621665 If an application was connected via jConnect or Open Client, then the connection name for that TDS based connection would have been empty. This has now been fixed and the connection name for TDS based connections will now default to the application name.
621669 If a recursive query contained a geometry column, the server would have incorrectly inferred an SRID of 0 for the column. This could have caused a spurious error to be reported.

For example, the following example incorrectly returned the error "Transform from SRID 4326 to 0 not supported. SQLCODE=-1444, ODBC 3 State="HY000"":

with recursive V( id, geom) as (

select 1, new ST_Point(0,0,4326)

union all

select id-1, null from V where id=0

)

select * from V

This has been fixed.

621682 When alerts were sent out via email from the SQL Anywhere Monitor, it was possible that the alert's title would have displayed in a disproportionately large font when viewed in certain mail programs (e.g. Gmail). This has been fixed.
621697 Some variants of the ALTER TEXT CONFIGURATION statement could have crashed the version 12 server, if the database was created with an earlier version of the server and not upgraded to version 12. This has been fixed.
621715 Installing an EBF on top of an existing 9.0.2 OEM Intel Solaris install would have removed

the authentication property of the Network server. The has now been corrected. The Personal server was not affected.

621822 A SQL Anywhere webservice client procedure may have truncated an HTTPS response under certain circumstances. This has been fixed.
621827 Same machine TCPIP broadcasts did not work correctly on Mac OS 10.6. This means that it may have been possible to start multiple database servers with identical names on the same machine when using Mac OS 10.6. This has now been fixed.
621829 If an application attempted to insert data into a proxy table, and one of the columns was an nchar based column, then there was a chance the data would have been truncated. This problem has now been fixed.

Note, when creating proxy tables to Oracle tables that contain varchar2 columns, the Oracle ODBC driver does not provide enough information for SQL Anywhere to correctly map the varchar2 columns to nvarchar columns. It is therefore strongly recommended that an explicit column list be used when creating proxy tables to Oracle tables containing varchar2 columns, and that the explicit column list appropriately maps the varchar2 columns to nvarchar columns.

621893 Sybase Central would not have displayed Windows services defined by version 9 and earlier software. This has been fixed.
621997 Functions and procedures may now have subselects and subqueries in their parameter expressions. Before this change, an error was returned if a subselect or a subquery was used anywhere in a parameter expression.
622016 Selecting NEW ST_Point( 1, 2 ).ST_Z( 3 ) would have returned Point(1 2). It should have returned Point Z ( 1 2 3 ). Likewise for ST_M( 4 ). This has been fixed.
622017 Executing SELECT NEW ST_Point( 1, 2 ).ST_Z() would have returned a value of 0. When there is no Z dimension, ST_Z should return NULL. Likewise for ST_M(), ST_MMin(), ST_MMax(), ST_ZMin(), and ST_ZMax(). This has been corrected.
622021 Following the fix for Engineering case 588740, the server could have performed slowly when deleting large numbers of rows concurrently. This has been fixed.
622024 If an application attempted to perform an integrated login from one Windows machine to a SQL Anywhere database server running on a different Windows machine; and the machine that the database server was running on was not the domain controller; and the Windows userid that the application was using was not explicitly mapped in the database; and the application was expecting that the server would instead map the application's Windows userid to a Windows user group on the Domain Controller, then there was a chance the integrated login would fail to map the Windows group.

For example:

1) suppose the domain controller was Windows machine DC, and

2) suppose the application was running on Windows machine App with Windows userid AppUser, and

3) suppose the database server was running on Windows machine SAServ with Windows userid ServUser, and

4) suppose the domain controller had a Windows user group GRP of which AppUser was a member, and

5) suppose the database did not grant explicit integrated login privileges to AppUser but instead had granted integrated login privileges to GRP instead,

then there was a chance that the application would fail to establish an integrated login to the db userid that GRP was mapped to. This problem has now been fixed.

622058 When MobiLink listeners were connected to a MobiLink server via a persistent sync gateway connection, shutting down the listener would have caused the MobiLink server to report "Ping request failed" as an informational message. This message was non-harmful, but misleading. The MobiLink server will now report "Listener request completed" instead.
622184 All CALL statements had the same hash signature when captured by diagnostic tracing, or the Application Profiling wizard. Now, the name of the procedure is incorporated into the signature. This means that the Summary view of captured statements will contain one entry for every procedure, rather than a single entry for all procedures, which makes it easier to identify procedures that need to be looked at for performance reasons.
622352 Some valid multi-polygons were incorrectly rejected. For example, a polygon with a hole containing another polygon could have been incorrectly rejected if the contained polygon touched the outer polygon at all of its vertices.

For example, the following could have given an error inappropriately:

select ST_GeomFromText( 'Polygon ((-7.2 57.914477861, -7.127601901 57.8, -6.9 57.8, -6.9 57.980214095, -7.2 57.936174862, -7.2 57.914477861), (-6.974221298 57.904050613, -7.041167328 57.904889847, -7.061722824 57.953496719, -6.974221298 57.904050613))' ) g, 

ST_GeomFromText( 'Polygon ((-7.006389618 57.881387711, -6.993610382 57.918611526, -7.077777863 57.879999161, -7.006389618 57.881387711))' ) m, 

g.ST_SymDifference( m ) 

This has been fixed.

622512 If an application was connected via jConnect 7 or Open Client 15.5, and the application fetched a datetime value, then the fractional seconds portion of the value would have been returned with six digits of precision; however, fetching a timestamp value would still have returned 1/300th of a second precision. This problem has been fixed and fetching either datetime or timestamp values using jConnect 7 or Open Client 15.5 will now return the full six digits of precision.
622520 The following methods had poorly defined behaviour when applied to an empty point.

ST_Point::ST_X()

ST_Point::ST_Y()

ST_Point::ST_M()

ST_Point::ST_Z()

ST_Point::ST_Lat()

ST_Point::ST_Long()

ST_Point::ST_X(Double)

ST_Point::ST_Y(Double)

ST_Point::ST_M(Double)

ST_Point::ST_Z(Double)

ST_Point::ST_Lat(Double)

ST_Point::ST_Long(Double)

They have been corrected.

622552 A misconfigured SQL Anywhere webservice function may have caused the server to crash when the function was executed. The problem was specific to a function declaration (not a procedure) that was configured as TYPE 'HTTP:POST:<mimetype>' (ie. mimetype = text/xml) that declares, but does not utilize, all substitution parameters. This has been fixed.

The following illustrates the problem, note that the clause consuming the substitution parameter is commented out:

create function bad_params(str long varchar, len int)

returns long varchar

url 'http://127.0.0.1/no_serv

622720 Application using the Ultralite runtime would have sometimes looped endlessly following a synchronization stream error. This has been fixed.
622759 When editing table data in an UltraLite database, Sybase Central would not have confirmed delete, update and cancel operations, even when the corresponding UltraLite plug-in preferences were set to confirm these operations. This has now been fixed.
622761 When editing table data in an UltraLite database, if a row was deleted and the connection to the database was immediately dropped, then the delete would not have been committed. This has been fixed.
622767 If a user's property sheet was opened, the password changed, Apply clicked and then the password changed and Apply clicked again, Sybase Central would have crashed. This has been fixed.
622789 Applications running on on Windows 7 64 bit systems could have crashed when canceling the methods EndExecuteReader or EndExecuteNonQuery. This problem has been fixed.
622866 If the MobiLink Server had been started with the "-xo http" or "-xo https" command line options to accept http[s] synchronizations from version 9 or lower MobiLink clients, and the port that was listening for synchronizations received an HTTP request from an HTTP client other than an UltraLite or SQL Anywhere MobiLink client (for example, a web browser), the MobiLink Server would have reported an HTTP error to the HTTP client, posted an error to the ML Server log, but would not have freed the worker thread in the ML Server. Multiple requests from other HTTP clients would have eventually resulted in no threads available to handle additional synchronizations. This has now been fixed, and the worker thread is returned to the pool of available worker threads after the error is reported.
622871 A NullPointerException was possible when calling a DATEFORMAT function that had a host variable as the first argument. This has been fixed.
622875 If a procedure or function was simple enough that it was inlined during semantic query transformations, and the procedure or function contained uses of a parameter with a different case than the case in the declared parameter list, then the statement could have failed with an error (column not found). In versions 10.0.1 and 11, only simple procedures would have had this problem. In version 12.0.0 (beta), simple user-defined functions could also have exposed this problem. This has now been fixed.
622889 When entering a file location in the Deploy Synchronization Model wizard, typing in a file name that did not include the folder would have resulted in an error when clicking Next. This has been fixed. A workaround is to specify the folder.
622934 If a file browser was open in Sybase Central, the Interactive SQL utility, the Console utility, or the MobiLink Monitor, it was possible to crash the program by clicking on the main application window, pressing the Esc key, and then closing the file browser. This has been fixed.
622944 When attempting to Cut and Paste a synchronization profile, the Paste operation would have failed. This has been fixed.

Also, if a synchronization profile was first copied to the clipboard and then modified before being pasted back from the clipboard into Sybase Central, then the pasted synchronization profile would have contained the modifications. This behaviour was at odds with all standard clipboard implementations and has been corrected. Now, a copy of the synchronization profile is placed in the clipboard and a copy is pasted from the clipboard so that the pasted object exactly matches the copied object.

623095 The text completer would have suggested names of text index tables, which was not useful. These table names are no longer listed by the text completer.
623106 New http, https and oe stream options have been added to the MobiLink server that will cause it to print additional errors, analogous to the errors printed by the -vf option.

Usage:

-x http(...;log_bad_request={yes|no})

-x https(...;log_bad_request={yes|no})

-x oe(...;log_bad_request={yes|no})

The default value for these noew options is "no".

If log_bad_request is enabled and a request disconnects before the server receives a complete set of HTTP headers, the server will print these errors:

[-10117] Stream Error: Failed reading an incomplete HTTP request

[-10117] Stream Error: This connection will be abandoned because of previous errors

If log_bad_request is enabled and a request contains an unknown User-Agent or unknown request type, the server will print these errors:

[-10117] Stream Error: Unknown HTTP User-Agent or request type

[-10117] Stream Error: This connection will be abandoned because of previous errors

This option is most useful when debugging network issues. For example, you can connect to the ML server using a web browser on the remote device and if the device can reach the server, then these errors will be printed.

623115 Sometimes, when printing the error -10193, "Unable to load Assembly ... into domain ...", the MobiLink server would have failed to print why it failed to load the assembly. Also, the MobiLink server would have spuriously printed this error whenever it failed to find a class in the loaded assemblies. These issues have now been fixed.
623270 The server would have crashed if a parallel archive backup was executed with TRANSACTION LOG ONLY and TRANSACTION LOG RENAME clauses. This has been fixed.
623276 On Windows systems, a reload of a pre-version 10 database file could have hung. Unix

systems were not affected. This has been fixed.

623280 Renaming a table using its property sheet, and then attempting to open a column's details on the Property sheet's Columns tab, would have caused Sybase Central to crash. This has been fixed.
623281 Doing absolute fetches from a cursor would have slowed down after one or more tables had been updated many times. Restarting the server would have resolved the problem. This has been fixed.
623292 The sa_get_request_times and sa_get_request_profile stored procedures did not properly handle request logs created with a non-zero value for the max_client_statements_cached database option when a connection executed the same statement more than once. The number of uses and time used for such statements was reported incorrectly. This has been fixed.

A workaround is to set max_client_statements_cached to 0 before creating the request log. Note that if a request log is to be analyzed using the tracetime.pl Perl script, it must also be generated with max_client_statements_cached set to 0.

623303 Database corruption was possible when there were multiple connections and UPDATE statements are used with one of them. A COMMIT on a connection, when another connection had an uncommitted UPDATE, could have caused the old row in the UPDATE transaction to be incorrectly given the object_id of where that row appeared in the uncommit log. This was corrected.
623308 Several of the spatial methods were returning incorrect results when given empty shapes as input:

- ST_IntersectsRect should return NULL, but was returning FALSE

- ST_Relate( ST_Point() ) should return NULL, but was returning 'FFFFFFFFF'

- ST_SnapToGrid( ST_Point(), x, y, z, m ) should return NULL, but was returning an empty point

This has been fixed.

623309 Calling method ST_IsWorld() on an empty polygon would have crashed the server. This has been corrected and ST_IsWorld() now returns false for an empty polygon.
623323 On the last page of the Create Database wizard, if a database name was specified that differed from the database file name, then the database name would have been ignored. The database would have appeared in the tree using the file name, not the database name that was specified. This has been fixed.
623432 The database server could have leaked memory in rare circumstances when strings

were being accessed concurrently. This has been fixed.

623481 If the Set Primary Key wizard was proceeded through without making any changes and the Finish button was clicked, then an extraneous error message would have been shown. Now the wizard simply closes.
623487 Many spatial methods had incorrect behaviour and/or generated inappropriate errors or assertions when given empty geometries as input parameters. Specifically, the behaviour of the following functions was incorrect:

ST_LineString::ST_LineStringAggr

ST_Geometry::ST_LinearUnHash

ST_Geometry::ST_Transform

new ST_LineString

new ST_CircularString

new ST_CompoundCurve

new ST_Polygon

new ST_CurvePolygon

new ST_GeomCollection

new ST_MultiCurve

new ST_MultiLineString

new ST_MultiPoint

new ST_MultiPolygon

new ST_MultiSurface

These methods have been fixed.

623597 If a table's property sheet, or its Primary Key wizard, was opened while the table's Data tab was showing, then any attempt to modify the table would have resulted in a "Schema upgrade not currently allowed" error. This has been fixed.
623610 Processor topology detection for x86/x64 processors has been improved to detect new SMT processors correctly (ie processors with multiple threads per core that are not the older "hyperthread" implementation). Previously, a quad-core i7 (for example) with two threads per core would be detected as 8 cores rather than 4 cores with 2 threads per core. The algorithm for distributing database server threads among logical processors when using less than the maximum concurrency permitted (via the database server -gtc switch) now correctly takes the 3-level chip/core/thread topology into consideration. Generally, this change does not affect licensing since association of a logical processor with the actual chip containing each logical processor was still correct in the old code with the possible exception of some newer Intel 6-core processors.

On Mac OS X where the operating system does not provide interfaces to control processor affinity, exact processor topology cannot be determined, so SQL Anywhere treats each logical processor as a separate package or "socket". On multicore and SMT processors, OSX users should purchase the correct license for the hardware they are using, but install a license that will allow the correct amount of concurrency. For example on a quad-core i7 with two threads per core, purchase a license for 1 CPU "socket" but install a license for 8 cpu "sockets" since each processor thread will be treated as a separate CPU socket.

Feature tracking code has also been changed so that the 3-level topology, CPU brand string and CPU info registers (which do not form a unique machine identifier) are reported when crash reports are sent to Sybase.

623758 If an attempt to set a database option in the Options dialog resulted in the error "Invalid setting for option '<option-name>'", the Options dialog would then have shown the invalid option value in the options table the next time the dialog was opened. This has been fixed.
623769 If a TDS based application using a multi-byte character set, connected to an SA database using a single-byte character set, subsequently fetched a char(n) or varchar(n) value, and the char/varchar value resulted in greater than n bytes when converted to the client's multi-byte character set, then the client would have received an incomplete value. This problem has now been fixed.
623779 Servers running databases with large schemas may experience periods of unresponsiveness

at idle checkpoint time. The performance of checkpoints has been improved to reduce the length of this interval.

623785 Some popular web mapping and visualization applications (Google Earth, Bing Maps, ArcGIS Online) use a Mercator projection based on a spherical model of the Earth. Ignoring the flattening at the poles can lead to errors of up to 800m in position and up to 0.7 percent in scale, but this simplification allows for more efficient projection in these applications. A new spatial reference system with srs_id=3857 has been added to the results of st_geometry_predefined_srs() and the Sybase Central plug in. This srs_id 3857 can be used to work with coordinates provided from these popular applications.

Note that ID 3857 as been defined by authority EPSG to refer to this modified spherical Mercator projection. Before this code was defined by EPSG, some applications used an application-defined code 900913 (*) to represent this SRS. The code 3857 is recommended, but compatibility with older applications can be achieved by manually copying the SRS at id 3857 to id 900913 if necessary.

In addition, comments are no longer automatically defined for spatial reference systems and units of measure that are pre-defined in a newly created database or created using the sa_install_feature(''st_geometry_predefined_srs') or sa_install_feature('st_geometry_predefined_uom').

(*) The code 900913 is selected by these application because of the resemblance between 9 and lowercase g, giving (900913 == google).

http://www.google.com/webhp?hl=xx-hacker&tab=iw

623805 The Relay Server State Manager (rshost) could have crashed if initialization failed before a log file was successfully created. Failure to create the log file, empty config file or missing required sections, were some of the conditions that could have lead to the crash. This has been fixed.
623891 1) If:

- the on_tsql_error database option was set to 'conditional' or 'stop'

- the continue_after_raiserror database option was set to 'off'

- a RAISERROR statement was executed in a procedure with an exception handler

- the exception handler executed a RESIGNAL statement

then the procedure's caller would not have been able to obtain the error code used in the RAISERROR statement by examining the SQLCODE variable. The SQLCODE value would be -631 (SQLE_RAISERROR_STMT).

2) If:

- the on_tsql_error database option was set to 'conditional' or 'stop'

- the continue_after_raiserror database option was set to 'off'

- a RAISERROR statement was executed in a trigger with an exception handler

- the exception handler executed a RESIGNAL statement

then the error would not have been seen by the statement which caused the trigger to fire.

This has been fixed. In case 1 above, the value of SQLCODE will now be the error code used in the RAISERROR statement. In case 2, the error will now not be suppressed by the trigger.

624021 The documentation erroneously indicated that for Windows and Windows CE, if no trusted certificates were provided, MobiLink clients would automatically load the certificates from the OS's trusted certificate store. This feature has now been implemented.
624034 Clicking a column header name in the Results panel to sort the column when all of the rows had not been fetched yet, could have caused the Interactive SQL utility to report an internal error. The problem was timing-sensitive, and did not happen every time. This has been fixed.
624040 In the Interactive SQL utility, the DESCRIBE CONNECTION command could have returned garbage characters if the connection string contained non-ASCII characters. This has been fixed.
624041 If the action command in the message handler did not contain any arguments, the MobiLink Listener may have crashed. This has been fixed.
624046 A DML statement inside a derived table block (i.e. SELECT FROM (INSERT/UPDATE/DELETE/MERGE) REFERENCING (...)) could have failed to respect check constraints. This has been fixed.
624047 Validating or unloading an empty table could have caused the server to fail an assertion when the database had been started read-only. This would only have happened if the table contained an index, and a truncate table had just been done. This has been fixed.
624179 If an application executed an INSERT statement that contained a file name with escaped single quotes as follows:

INSERT INTO directoryTab(file_name, contents) VALUES( 'he''l''lo.txt', 0x0 )

where directoryTab was a directory access table, then the resulting file would incorrectly have been named "he'l'lo.txtxt", instead of the expected name "he'l'lo.txt". This problem has now been fixed.

624183 As a result of the changes for Engineering case 585282, the maximum packet size for Open Client and jConnect applications was increased from 512 bytes to 4096 bytes. These changes have been extended to allow Open Client and jConnect applications to now negotiate a maximum packet size of 16000 bytes.
624185 When using the ST_SnapToGrid overload that specifies an origin point and x/y/z/m grid sizes, the server could have used the wrong grid size for M coordinates. This has now been corrected.

For example, the following query returned the wrong answer:

select new ST_Point( 1, 2, 3, 4, 504326 )

.ST_SnapToGrid( new ST_Point( 3, 4, 504326 ),

0.1, 0.2, 10, 10 )

624222 On Windows Vista and later systems running with a language that was not English, the user needed to be a member of the Administrator group in order to start SQL Anywhere Monitor or configure Sybase Central. This has been fixed.
624352 When run on a Windows CE device, the QAnywhere Agent for UltraLite would have failed to connect with a MobiLink server running on the desktop through ActiveSync, if no -x option was specified. The QAnywhere Agent was using "host=localhost" for its stream parameters when no -x option was specified. Now, the agent does not specify stream parameters in this case, letting the UltraLite sync stream choose the default host IP address.
624373 For a database created using pre-12.x software and then upgraded using 12.x beta software, Sybase Central would not have supported new 12.x features, such as spatial reference systems and sequences. This has been fixed.
624404 If an event made a call out to the Java external environment, then the Java environment would have leaked memory with every iteration of the event. The result would have been an eventual 'out of memory' exception from the Java VM. This problem has now been fixed.
624405 Adding a member to an empty destination alias would have caused a crash. This has been fixed.
624555 When adding a new table to the remote database schema in a synchronization model, if the remote schema was based on a consolidated database other than SQL Anywhere, and the table was referenced by foreign keys in other tables already copied from the consolidated schema to the remote schema, then an internal error would have occurred. This has been fixed.

Note, a workaround is to add the table to the remote schema by using the Update Schema menu item to update the remote schema.

624574 Attempting to connect to a newly created message store at the end of the Client Store wizard could have failed there already was network server running the computer and its "-gd ALL" option was not used. This has been fixed.
624586 The Validate Index statement would have placed an exclusive lock on the table, preventing other connections from accessing the table. Alternatively, the connection performing the validate could have blocked waiting for exclusive access to the table. This has been changed so that Validate Index no longer places an exclusive lock on the table.
624727 Sybase Central could have crashed when opening the Procedures & Functions folder. This has been fixed.
624801 An HTTP protocol option specifying a port with no value would have started a listener on the next available port. Specifying a port with no value, or providing a value of zero, is no longer accepted. All protocol options that take a numeric value will no longer accept an empty value as a zero default.
624809 Support for .NET Framework 4 and Visual Studio 2010 has now been added to the SQL Anywhere ADO.Net provider. Three versions of the provider are installed. One for .NET 2.0 / 3.0, one for .NET 3.5, and one for .NET 4.0. Each version contains both assembly and policy files.

Here is a list of the files:

(1) .NET 2.0 / 3.0

...\Assembly\V2\iAnywhere.Data.SQLAnywhere.config

...\Assembly\V2\iAnywhere.Data.SQLAnywhere.dll

...\Assembly\V2\iAnywhere.Data.SQLAnywhere.xml

...\Assembly\V2\policy.11.0.iAnywhere.Data.SQLAnywhere.dll

(2) .NET 3.5

...\Assembly\V3.5\iAnywhere.Data.SQLAnywhere.v3.5.config

...\Assembly\V3.5\iAnywhere.Data.SQLAnywhere.v3.5.dll

...\Assembly\V3.5\iAnywhere.Data.SQLAnywhere.v3.5.xml

...\Assembly\V3.5\policy.11.0.iAnywhere.Data.SQLAnywhere.v3.5.dll

(3) .NET 4.0

...\Assembly\V4\iAnywhere.Data.SQLAnywhere.v4.0.config

...\Assembly\V4\iAnywhere.Data.SQLAnywhere.v4.0.dll

...\Assembly\V4\iAnywhere.Data.SQLAnywhere.v4.0.xml

...\Assembly\V4\policy.11.0.iAnywhere.Data.SQLAnywhere.v4.0.dll

...\Assembly\V4\SSDLToSA11.tt

The iAnywhere.Data.SQLAnywhere assembly reference can be added in Visual Studio with the Add Reference dialog. Use the one depending on the .NET project as follows:

iAnywhere.Data.SQLAnywhere for .NET 2 should be used for .NET 2.0 / 3.0 projects

iAnywhere.Data.SQLAnywhere for .NET 3.5 should be used for .NET 3.5 projects

iAnywhere.Data.SQLAnywhere for .NET 4 should be used for .NET 4 projects

SSDLToSA11.tt is used for generating database schema DDL for Entity Data Models. The SQL Anywhere installer copies this file to the Visual Studio 2010 directory. The DDL Generation property should be set to this file when generating database schema DDL for Entity Data Models.

624826 Database corruption was possible when a null byte array was assigned to a host variable using the PreparedStatement set method. This has been corrected.
624832 The server could have failed to generate a valid internal representation for a Round Earth polygon of a particular shape if the polygon was crossed by equator. This has been fixed.
624956 With dbisqlc, when invoking the "OUTPUT TO" statement without a FORMAT clause, or before explicitly setting the OUTPUT_FORMAT option at least once in a session, the generated output file would not have been in the expected "TEXT" output format (ie comma-separated values). This problem has been fixed.

A related change has also been made to the values accepted for the SCREEN_FORMAT option by dbisqlc on UNIX platforms. Prior to this change, dbisqlc accepted both "TEXT" (for the default columnar display) and "ASCII" (for comma-separated values). These options have been renamed to COLUMNS and CSV respectively. The old values of TEXT and ASCII are still accepted but are deprecated.

624960 Each time a table or index was dropped, 16 bytes of store memory was leaked. This could have resulted in a slow growth of the database file over time with an application that created and dropped many tables or indexes. This has now been fixed.
624971 The database server could have crashed when recovering a database with multiple dbspaces. This has been fixed.
624974 Following the changes for Engineering case 621443, if an application made an external environment call, and the external environment crashed during that call, then there was a very rare chance the server would also have crashed. This problem has now been fixed.
624986 If the Interactive SQL fast launcher was enabled, and there was enough connection information on startup to attempt a connection, the main dbisql window could have, very occasionally, got into a state where it did not paint correctly. This has been fixed.

There are a number of workarounds:

- Minimize and then restore the dbisql window, or

- Resize the window, or

- Turn off the fast launcher for dbisql

624989 Statements containing predicates of the form T.X = R.X where T.X and R.X have different domains could have had poor performance due to a less than optimal access plan generated by the optimizer. Such predicates were not using a join histogram to estimate the selectivity of the predicate. This has been fixed so that join histograms are now built as long as the domains of the columns are both numeric data types. Numeric datatypes include the following:

BIGINT

BIT

DECIMAL

DOUBLE

FLOAT

INTEGER

NUMERIC

REAL

SMALLINT

TINYINT

624991 If a table was created with a primary key column declared as GLOBAL AUTOINCREMENT when the global_database_id option was set to 0, a performance warning claiming that the column was not indexed would have been written to the server console. This has been fixed.
625011 The iAnywhere and SQL Anywhere JDBC drivers only supported the PreparedStatement methods addBatch() and executeBatch(). Support has now been added for the Statement methods addBatch(), clearBatch() and executeBatch(). Due to the fact that the JDBC specification is unclear on the behaviour of Statement.executeBatch(), the following notes should be considered when using this method with these JDBC drivers:

1) Processing of the batch stops immediately upon encountering a SQL exception or result set. If processing of the batch stops, then a BatchUpdateException will be thrown by Statement.executeBatch(). Calling getUpdateCounts() on the BatchUpdateException will return an integer array of row counts where the set of counts prior to the batch failure will contain a valid non-negative update count; while all counts at the point of the batch failure and beyond will contain a -1. Casting the BatchUpdateCount to a SQLException will provide additional details as to why batch processing was stopped.

2) The batch is only cleared when Statement.clearBatch() is explicitly called. As a result, calling Statement.executeBatch() repeatedly will re-execute the batch over and over again. In addition, calling Statement.execute( sql ) or Statement.executeQuery( sql ) will correctly execute the statement with the "sql" argument, but will not clear the underlying batch. Hence, calling Statement.executeBatch() followed by Statement.execute( sql ) followed by Statement.executeBatch() will execute the set of batched statements, then execute "sql" and then execute the set of batched statements again.

625189 Repeatedly inserting and deleting rows with long strings may have lead to unconstrained database growth. This was more likely to occur if the server was continually under heavy load. In 11.x servers, snapshot isolation must have been enabled for this problem to have occurred. This has now been corrected.
625219 A prepared statement was not being dropped when an exception occurred while calling the method SACommand.ExecuteReader. This problem has been fixed.
625305 Queries that reported warnings could have caused dbisqlc to crash, hang, report that the prepared-statement resource limit had been exceeded, or misbehave in a variety of other ways. This problem has been fixed.
625314 It is now possible to use the Script Execution utility (dbrunsql) to reload a database without displaying the GUI, but still log output messages (results) to a file. Previously, if the -q option was not used the dbrunsql gui was shown regardless of the -g setting. Now, the -q and -g switches work together. If -g- is specified, the GUI will not be shown except for error messages. The -q option now only controls if data and warning messages shall be output to the GUI, the console, and/or an output file.
625325 When using the Service utility to delete a service that was running, the warning "The specified service is running. The service will be deleted when is is stopped." was reported. The warning should read "The specified service is running. The service will be deleted when it is stopped." The wording has now been corrected.
625329 The Service utility was not reporting the warning "The specified service is running. The service will be deleted when it is stopped." when deleting a running service. It was failing to detect the running state of the service during the delete and failing to report the warning as expected. This has been fixed.
625353 Code that attempted to prevent a divide-by-zero condition may have caused the server to crash. This has now been fixed.
625465 When deploying SQL Anywhere using the Deployment wizard, the PHP Extenv DLLs: (php-<PHP version>_sqlanywhere_extenv11.dll) and PHP SQL Anywhere DLLs (php-<PHP_version>_sqlanywhere.dll) were included, but not the file dbcapi.dll. This has been corrected so that dbcapi.dll is now deployed as well.
625466 When run on a Windows 2008 Server (AMD64) machine, the Sybase Central fast launcher could have failed to re-launch Sybase Central. This has been fixed.
625493 If an application connected using a version of jConnect that did not support bigtime, and the application subsequently prepared a statement that consisted of a batch of insert and select statements, then there was a chance the server would have incorrectly inserted a value of 00:00:00.0 for the time value if one of the parameters to the insert was of type time. This problem has now been fixed.
625496 In some cases, the server could have incorrectly returned an overflow error when computing a division of DOUBLE values. This has been fixed. A workaround is to use the following server command line "-hW OverflowError2".
625515 Sybase Central did not allow stopping a Windows service in a "Delete pending" state. This is now fixed. The Stop menu item is now enabled for running services, regardless of

whether a delete is pending.

625625 Sybase Central would have generated an error when attempting to create a notifier, gateway or carrier with any of the following characters in its name: '[', ']', '^', '%', '_'. A similar error would have occurred when attempting to rename a notifier, gateway or carrier and any of these characters were used in the new name. This has been fixed.
625641 The Interactive SQL utility could have reported an error on some Windows computers that its preferences or history file could not be saved. The error message quoted a file name which typically included a directory under the "Documents and Settings" directory which was not the home directory of the current user. This has been fixed.

Note, this same problem has the potential to affect Sybase Central, DBConsole, and MobiLink Monitor, though their symptoms are likely to be different.

625647 Changing the timestamp_format option from its default value of "YYYY-MM-DD HH:NN:SS.SSS" could have caused a "Cannot convert '<value>' to a timestamp" error to have occurred when selecting the Events or Maintenance Plans folders in the tree. This has been fixed.
625759 When in the Procedure debugger, clicking on the header of the breakpoint icon column caused an error. This has been fixed.
625800 Registering the plug-in, but not loading it immediately, would have caused an exception to occur. This has been fixed.
625819 If checkpoints on a mirror server took a long time to complete, possibly due to a large cache with many dirty pages, then applications performing updates on the primary server could have been blocked until the checkpoint completed. This has been fixed.
625866 A SQL statement whose text exceeded 64K could have caused a crash.This has been corrected.
625933 If an application that was connected to a server running on a big endian machine attempted to query data via the Remote Data Access feature with the 64-bit ASE ODBC driver, then there is a chance the server would have incorrectly reported a truncation error. This problem has now been fixed.
626091 When SQLAnywhere reported the ASE label for the "Big5" character set, it incorrectly reported "Big5". SQLAnywhere now reports "cp950" as the ASE label for the Big5 character set. As far as SQL Anywhere and ICU are concerned, these two character sets are distinct (but very similar), but ASE makes no such distinction. The ASE version of the label is generally not used directly by SQL Anywhere, but is provided to users who need to use ASE libraries. Typically, a client would obtain the ASE label via a call such as db_extended_property( 'charset', 'ase' ).
626145 If the Stored Procedure Debugger was connected to a database, execution of SQL Anywhere Web Service procedures for that database could have been very slow. This has been fixed.
626151 If an application connected to an authenticated server made an external environment call, and the call took more than 30 seconds to complete, then the application would have hung. The check for ensuring that an external connection was properly authenticated was incorrect, and has now been fixed.
626209 In very rare cases, the server may have crashed if a simple SELECT statement that bypassed optimization used a BETWEEN predicate with a high value that was not known until execution time. This has been fixed.
626241 The UltraLiteJ Database Load utility (ULjLoad) would have failed with a syntax error for tables with a name that was a reserved word, and either it was involved in a foreign key, or it had data in the source XML file. This has been fixed.
626255 If a statement in an event caused a deadlock or blocking error the first time it was executed, an assertion error (107001 Duplicate table in UPDATE statement) could have been given the next time the event was executed. Now an "invalid statement" error is given in this case. A workaround is to define the body of the event as a procedure and call the procedure from the event.
626295 If a remote query that involved GROUP BY was executed in no-passthrough mode, and the server ran into a low memory situation, then there was a chance the query would have failed with an "update operation attempted on non-updatable remote query" error. This problem has now been fixed and the query will now successfully complete without error.

Note that a workaround for this problem is to increase the amount of memory that is available to the server.

626420 If the server executed a 'SET rowcount' statement with a host variable inside a batch, then the server would have crashed. This has been fixed.
626459 A UDP Gateway's property sheet would have shown the default destination port as -1. This has been corrected so that the correct value of 5001 is now shown.
626460 With the Indexes folder selected in the tree, attempting to delete a foreign key and its primary constraint in a single delete operation could have crashed Sybase Central. This has been fixed.
626469 In rare situations, the UltraLite plugin could have caused Sybase Central to crash when being closed. This has been fixed.
626474 The SQL cited in the "ISQL Error" window did not display blank lines. As a result, the line number in the database error message might not have corresponded to the displayed SQL if the statement contained blank lines. This has been fixed.

Also, the line and column shown in the status bar of the main DBISQL window is no longer updated if the caret (insertion point) is moved in the text field that shows the SQL in the "ISQL Error" window.

626480 An extension to the TLS protocol for session renegotiation has been made to fix a recently discovered vulnerability (RFC 5746). Although SQL Anywhere software is not directly vulnerable, third-party servers that it communicates through may be vulnerable. SA clients now support this TLS extension which will allow vulnerable third-party servers to be secured.
626481 The caret had to be within a statement's text for the "single step" menu item (SHIFT+F9) to work. This restriction has now been relaxed so that if the caret is in whitespace or a comment before a statement, "single step" executes the next statement.

For example, consider the following code:

/*

Lorem ipsum

*/

select 123;

If the caret is anywhere within the comment, or on the blank line before the SELECT statement, pressing SHIFT+F9 now executes the SELECT statement. Previously, an error message saying the caret was not on a statement would have been displayed.

626617 Synchronization requests from clients prior to version 11 that were using a UTF8-encoded database, would have failed against 64-bit MobiLink servers running on Unix systems. This has been fixed.

Note, this problem does not occur with the 32-bit versions of the MobiLink server.

626622 If a spatial reference system was created with SRID a and then a subsequent SRS was created with SRID a (either by modifying or dropping/creating), then the stale settings from the first spatial reference system could have been used. The stale values would have persisted until the server was restarted. This has been fixed.
626662 The Load Database wizard would crash on a second attempt if the first attempt failed, or was canceled, before completion. This has been fixed.
626666 The UltraLite CustDB sample application About dialog incorrectly stated "for Windows CE" for all Windows platforms. This has been removed from the dialog text.
626769 If old transaction log files on a primary server were deleted while the server was running, subsequent BACKUP/RENAME operations would not have resulted in the copies of these logs on the mirror server being deleted. This has been fixed.

A workaround is to restart both servers and perform another BACKUP/RENAME.

626779 Some harddisk drivers on Windows and Linux are known not to execute drive cache FLUSH commands when applications request them; however, all platforms may be affected by similar issues. When the database server shuts down because of a system shutdown, reboot or hibernate, the database server now delays a short while (3 seconds) after the last I/O is performed to allow a little bit of time for cached data in the drives to be written to the disk. On UNIX platforms, shutting down the server via SIGTERM is assumed to be due to a system shutdown or reboot.
626951 The iAS Oracle ODBC driver could not detect connection status correctly when a connection was forcibly disconnected by the server. Due to this problem, an application, such as the MobiLink server, might not re-establish a new connection and would have reported the same errors repeatedly. This problem is fixed now.
627054 If the system procedure sa_describe_query() was executed with null as the query parameter then the server would have crashed. This has been fixed.
627061 The table on the Synchronization Information page of the Database property sheet was editable, although changing the values had no effect. This has been corrected so that the table is now read-only.
627062 An INSERT ... ON EXISTING UPDATE DEFAULTS OFF statement did not update columns defined with DEFAULT LAST USER. This has been fixed.
627167 Because concatenation did not coerce operands to character, a ClassCastException could have been thrown when a non-character operand of concatenation was given. This has been corrected.
627228 Under very rare circumstances the server could have crashed at startup while updating the SYSHISTORY table. This has been fixed.
627238 The Include directory reference for the UltraLite CustDB sample on Windows Mobile 6 platforms was incorrect. The Windows Mobile 6 platform Include directory pointed to the %sqlanyX%\h directory, but should have pointed to %sqlanyX%\SDK\Include. While correcting this, it was noted that there were inconsistencies in the quoting of the Include directory across the projects. Now all references are quoted.
627266 An "Out of Memory" assertion may have been raised by the SQL Anywhere OLE DB provider, which may have been indicative of heap corruption. This problem may arise when binding parameters that are described as DBTYPE_IUNKNOWN (a type used for LONG VARCHAR parameters). This problem has been fixed.
627381 The changes for Engineering case 619360 introduced a problem such that when creating a database on a BlackBerry SDCard, or flash file store (file:///store), and then releasing the database connection without doing any reads, a Null Pointer exception could have resulted.

For example:

conn = DatabaseManager.createDatabase( config );

conn.release();

This has now been fixed.

627392 Selecting from a DML derived table that used INSERT ON EXISTING UPDATE, would not have returned any rows for rows that were updated. However, the rows were still updated as expected. This has been fixed.

Note, that you the OLD values for rows that have been updated were not visible; the INSERT derived table only supports the FINAL correlation. To see both the OLD and FINAL row values, use the MERGE statement instead of the INSERT statement.

627397 In very rare cases the server may have crashed when releasing a query plan of a DML statement from the plan cache, and the statement had triggers and publications and used string or numeric values. This has been fixed.
627403 If the Relay Server Outbound Enabler (RSOE) lost connectivity to the Relay Server, and was attempting to restart the worker threads at the same time that it was about to time out a thread working an active request, it was possible for the RSOE to have crashed. This has now been fixed.
627407 .NET applications using the SQL Anywhere OLE DB provider may have failed with the following error for OleDbDataReader.Close():

"Reader Exception: Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

This has been fixed.

627526 Attempts to create, edit, or modify Windows Mobile proxy ports from the "Connect" dialog would have silently failed on Windows Vista or Windows 7 if user access control (UAC) was enabled. This has been fixed.
627527 Selecting from a DML derived table over a table that had computed columns, would have crashed the server. This has been fixed.
627528 If the Support utility (dbsupport) attempted to send an email, either by explicit command using the -cet option or when a crash occurred, and the configured mail server was either non-existent, running on a different port, or down at the time of the attempt (i.e. the connection to the mail server failed), then dbsupport would have crashed. This has been fixed.
627544 When deploying a Synchronization Model to files, the generated .bat or .sh files would have invoked programs (such as dbisql and dbmlsync) without specifying the program's folder, relying on the execution search path to find the program. If an incompatible version of the program was found earlier in the path, it would have been used instead of the compatible version. A workaround was to put the compatible version earlier in the path. This has been fixed. Now the SQLANYnn environment variable (where 'nn' is the version number) is used if it is defined. Also, if the 64-bit version of a program exists it will be used instead of the 32-bit version.
627580 Calling ST_IntersectsRect would have returned incorrect results if the second point was not above and to the right of the first point.

Example:

In the following query, both expr1 and expr2 should return true (the docs state that they are equivalent).

select ST_Geometry::ST_GeomFromWKT('Polygon ((1 1, 3 1, 3 3, 1 3, 1 1))', 0) rect1

, new ST_Point( 0, 2, 0 ) p1

, new ST_Point( 2, 0, 0 ) p2

, new ST_Polygon( p1, p2 ) rect2

, rect1.ST_Intersects( rect2 ) expr1

, rect1.ST_IntersectsRect( p1, p2 ) expr2

;

Result:

rect1,p1,p2,rect2,expr1,expr2

Polygon ((1 1, 3 1, 3 3, 1 3, 1 1)),Point (0 2),Point (2 0),Polygon ((0 0, 2 0, 2 2, 0 2, 0 0)),true,false

This has been fixed.

627631 In rare cases, a database server used for mirroring could have crashed when the connection to its partner was dropped. This has been fixed.
627634 The ODBC driver did not support setting of the SQL_ATTR_METADATA_ID attribute for connections using SQLSetConnectAttr(). This setting governs how the string arguments of catalog functions are treated. However, the driver does support this attribute at the statement level using SQLSetStmtAttr(). For SQLSetConnectAttr(), the ODBC driver returned a "driver not capable" error. This problem has been corrected.

If the setting for SQL_ATTR_METADATA_ID is SQL_TRUE, the string argument of catalog functions are treated as identifiers. The case is not significant. For nondelimited strings, the driver removes any trailing spaces and the string is folded to uppercase. For delimited strings, the driver removes any leading or trailing spaces and takes literally whatever is between the delimiters.

If the setting is SQL_FALSE, the string arguments of catalog functions are not treated as identifiers. The case is significant. They can either contain a string search pattern or not, depending on the argument. The default value is SQL_FALSE.

The following example changes the default setting for the entire connection.

rc = SQLSetConnectAttr( hdbc, SQL_ATTR_METADATA_ID, (SQLPOINTER)SQL_TRUE, SQL_IS_UINTEGER );

This setting is important for case-sensitive databases. For example, the table name "customers" does not match the table name "Customers" in a function such as SQLPrimaryKeys() unless the SQL_ATTR_METADATA_ID attribute has been set to SQL_TRUE.

627649 The PHP driver would have crashed when trying to open multiple result sets using SASQL_USE_RESULT or sasql_real_query() and sasql_use_result(). This has been fixed.
627657 The list of SQL functions suggested by the editor's Text Completer was incomplete when connected to a version 11.0 database. This has been fixed.
627672 Running the VALIDATE INDEX statement would have committed any previously uncommitted transactions. The VALIDATE INDEX statement no longer performs a COMMIT on its connection.
627679 Queries which used a spatial predicate in any comparison other than "= 1" could have returned a subset of the correct result set. For example, queries using any of the following comparisons in the WHERE clause could have returned too few rows:

geom1.ST_xxx( geom2 ) <> 1

geom1.ST_xxx( geom2 ) = 0

geom1.ST_xxx( geom2 ) = ( subquery )

geom1.ST_xxx( geom2 ) = geom3.ST_yyy( geom4 )

where ST_xxx and ST_yyy could be any of the following spatial predicates:

ST_Intersects

ST_IntersectsFilter

ST_IntersectsRect

ST_Overlaps

ST_Contains

ST_ContainsFilter

ST_Within

ST_WithinFilter

ST_Covers

ST_CoversFilter

ST_CoveredBy

ST_CoveredByFilter

ST_Equals

ST_EqualsFilter

ST_OrderingEquals

This has now been fixed.

627756 Copying and pasting a table in Sybase Central would have failed if the table had a primary key with a comment and the owner of the table was changed in the Table Duplicate dialog. This has been fixed.
627776 On big-endian machines, the 64-bit iAS ODBC driver could have returned random values when an application was trying to retrieve the following statement attributes:

SQL_ATTR_METADATA_ID

SQL_ATTR_ROW_NUMBER

SQL_ATTR_ROW_ARRAY_SIZE

SQL_ATTR_PARAMSET_SIZE

SQL_ATTR_MAX_LENGTH

SQL_ATTR_MAX_ROWS

The driver was using SQLUINTEGER for these statement attributes. It has been corrected to now use SQLULEN.

627780 The Start Server in Background utility (dbspawn) would have failed to start a database server if the full path to the server executable was given and that path contained a space. This has now been fixed.
627784 When creating a Synchronization Model, clearing the Subscription Name field or the Synchronization Field would caused an inappropriate error message. This has been fixed.
627788 Selecting the database property "name" for viewing using the SQL Anywhere Console utility

would have prevented the list of database properties from refreshing. This has been fixed.

627887 Under certain circumstances, newly created MobiLink projects could have appeared twice in the list of projects. This has been fixed.
627895 Since the change made for Engineering case 616657, very large indexes (3 or more levels) may have become corrupted resulting in an illegal cast java error. When the page size was increased, the number of rows in the table required to trigger this problem increased significantly. A work around would be to increase the page size. This has now been fixed.
627956 When executing a batch of statements, if an INPUT USING statement failed to connect to the source database, an error message was displayed, but execution continued unconditionally. Now, the "on_error" setting is respected.
627968 If a FOR statement used a CALL PROCEDURE(), then the server could have crashed while executing the statement. This has been fixed.
628115 Invalid options to ST_AsBinary() could have caused the server to crash with a stack overflow. This has been fixed.
628127 When creating a new remote database schema in a synchronization model from a SQL Anywhere consolidated database schema containing VARBIT or LONG VARBIT columns, those columns would be converted to VARCHAR and LONG VARCHAR columns. This has been fixed. Now VARBIT and LONG VARBIT columns are copied to new SQL Anywhere remote databases. UltraLite does not support VARBIT or LONG VARBIT types, so such columns are still converted for new UltraLite databases, but a warning is now given.
628176 The changes for Engineering case 626303 caused the rollback after a synchronization failure to possibly corrupt the database. This has been corrected.
628253 The Interactive SQL utility option isql_print_result_set was being ignored. This has been corrcted so that it is once again respected.
628256 The Interactive SQL utility (dbisql) could have reported an internal error if a column header for a result was clicked, dbisql had not already cached the entire result and then fetching the remaining rows was canceled. This has been fixed.
628275 Clicking Finish in the Load Database wizard would have caused Sybase Central to crash if a database id was not specified on the last page of the wizard. This has been fixed.
628295 Select from DML derived tables were allowed in two contexts that have now been excluded by this fix.

One context was correlated subqueries. The semantics of a correlated DML statement are poorly defined and hard to implement. The following query is not allowed:

select * from (insert into newids select outerproduct.id) referencing (final as insertedids), product as outerproduct

The other context was common table expressions, again because the semantics are unclear.

628304 If the MINIMUM TERM LENGTH setting of the text configuration used to build a text index was changed to a value greater than 1, prefix terms in phrase queries of full text search could have behaved differently depending on their position in the phrase. This has been fixed.
628436 In extremely rare timing dependent cases, if a communication error occurred on a mirror or diagnostic tracing server-to-server connection, the server could have crashed, failed an assertion or hung. This has been fixed.
628443 Reconfiguring the fast launchers (Interactive SQL and Sybase Central) could have caused the launchers to become unresponsive. The symptom was that there could have been multiple dbisql.exe / scjview.exe processes on the computer rather than just one. This has now been fixed.
628553 Execution of an INPUT statement which used an explicit encocoding of "utf-16" would have worked if the input file had the same endianness as the platform, but would have failed if the endianess was different, even if the byte-order-mark was present in the file. This has been fixed.
628564 The Interactive SQL utility would have returned a function sequence error when connected to an UltraLite database and a query was executed if the 揅ommit after every statement� option was checked (under Tools/Options/UltraLite/Commands). This has now been fixed.

A workaround is to uncheck the 揅ommit after every statement� option.

628573 The system procedure xp_startsmtp may have returned error code 104 depending on the SMTP server being used. This has been fixed.
628587 A multithreaded application could have failed to load the unmanaged dll. This has now been corrected.
628687 When converting a string (EWKT or EWKB) to a geometry, the assertion 100103 could have failed if the embedded SRID was not known in the database. The assertion would have caused the current request to fail instead of returning an appropriate error message. This has been fixed; such conversions will now return the error: -1409 "Unknown spatial reference system (%1)".
628705 In some cases, the substitution parameters for error messages from spatial operations could have been incorrect.

For example, the error message for the following query could incorrectly report:

"A geometry with SRID= is not supported for method 4326."

select new st_point(0, 0, 4326) p

from sys.dummy

where p.ST_Envelope().st_intersectsfilter(p) = 1

This has been fixed. The following message is now returned:

"A geometry with SRID=4326 is not supported for method ST_Envelope()."

628735 A full text query with a non-alphanumeric character in a prefix string could have caused a server crash. This has been fixed.
628836 Shutting down a database could have caused an assertion failed error 104301 if a GRANT PROFILE had failed because the "diagnostics" user was not a group. This has been fixed.
628843 If an application connected to a 64-bit Linux server subsequently used the ASE ODBC driver to query proxy tables mapped to an ASE server, and the proxy tables contained long varchar or long binary data, then the long data might have been returned with extra characters or bytes. This problem has now been fixed.
628947 When transforming a geometry using a Mercator-style projection, the transform could have failed with an error such as the following:

Error -20 during transformation.

For example, if the geometry contained points close to the poles of the Earth, this error could have been returned. This error could also have been returned when viewing a geometry in the spatial viewer.

The Mercator projection (and other cylindrical projections) can not transform polar points because the y coordinate would need to be infinite (cylindrical projections treat the Earth as a rubber balloon in a glass cylinder and inflate the balloon; the projection is taken from the sides of the glass cylinder, and the polar points never touch the sides).

This has been fixed; when transforming a geometry from a lat/long system to a Cartesian system, if a point close to the North or South pole fails to transform the server moves the latitude of the point a small distance away from the pole along the same longitude. The distance moved is slightly more than (1e-10 radians). This shifting is used only if the point fails to transform without shifting.

628952 The MobiLink server would have shown the following error:

Invalid Date-time segment. Year value out of range

and aborted any synchronization requests, if the consolidated database was running on an ASE server with a database that was using a multi-byte charset, and the MobiLink server was running on a Windows system that was using a non-English Date format. This problem has now been fixed.

629053 When sorting a column in the Data Details panel, an error could have occurred stating "Error reading row. Accessing a closed connection object." This has been fixed.
629056 Attempting to connect with the connection parameter DatabaseName (DBN), but not DatabaseFile (DBF), to a database that was not running on a network server could have incorrectly resulted in the error "Request to start/stop database denied". This error could have also occurred on the personal server if the -gd option was used. This has been fixed so that this now results in the "Specified database not found" error.
629058 A Java VM running inside the MobiLink server could have run out of memory if the server had many requests with different script versions and some sync scripts made calls to DBConnectionContext.getConnection(). This has been fixed.
629073 If a stored procedure or user-defined function contained a statement that referenced a connection level variable (created with CREATE VARIABLE), then it was possible for the statement to behave improperly if plan caching was used by the server. The statement could have used the NULL SQL value for the variable instead of giving an error if the variable were dropped, and the statement could have used incorrect type information if the variable was dropped and then recreated with a different data type. This has been fixed.
629078 Sybase Central could have run out of memory when displaying a view, trigger, procedure, event or external environment object in the right pane. This would normally have occurred only if the Tasks pane was showing in the left pane. This has been fixed.
629153 If an application attempted to start an external environment session, and other connections were being established, or were closing, at exactly the same time, then there was a very small chance that the server could have crashed. This problem has now been fixed.
629277 The QAnywhere Standalone Clients would not synchronize when expected to in two cases.

The first case occurred if a sync request was made while another synchronization was already taking place. It was expected that another sync will begin once the current one has finished, but this did not always happen.

The second case occurred if a sync request was made while using a Transactional Manager. It was expected that only sync requests resulting from changes to the database will be delayed until the transaction is committed. However, this delay was occurring for other types of sync requests as well.

These two cases have now been fixed.

629284 The Visual Studio "Add Connection" wizard will display SQL Anywhere and Adaptive Server Anywhere ODBC Data Source names in the pick list when the SQL Anywhere .NET provider is used for the connection. SQL Anywhere integration with Visual Studio has been improved to also show Sybase IQ ODBC Data Source names in the pick list.
629304 The values for DataSourceProductVersion and DataSourceProductVersionNormalized returned by the SAConnection.GetSchema method didn't match the ADO.NET specification. The normalized version string should have been like nn.nn.nn.nnnn. For example, SQL Server 2008 would return "DataSourceProductVersion = 10.00.1600, DataSourceProductVersionNormalized = 10.00.1600". SQL Anywhere was returning "DataSourceProductVersion = 12.0.0.1234, DataSourceProductVersionNormalized = 12.0.0". This has now been corrected.
629312 When using the Python driver (sqlanydb.py), inserting a value larger than 2^32 into a BIGINT column would have resulted in a truncated integer value. This has been fixed.
629411 The database option UUID_HAS_HYPHENS has been re-added. It can have the values On (default) and Off. If a uniqueidentifer value is converted to a string, then the string contains hyphens if the option value is On.
629415 When deleting Agent events from a consolidated database there is a prompt for a date. Events that were created BEFORE this date are deleted. Messages ON this date would also have been deleted if their timestamp was before the current time of day when the user elected to delete the Agent events. This has been fixed.
629417 If an application attempted to execute a Java external environment procedure, and the target method was part of a class that had a private constructor, then calling the Java external environment procedure would have failed with an IllegalAccessException. This problem has now been fixed.
629437 The user name in the status message in the Installing the MobiLink System Setup dialog would have been truncated if it was more than a few characters. This has been improved, although very long names may still be truncated. A workaround is to wait until the task finished, as the completion dialog shows the full name.
629453 when editing table data in the Results pane, clicking the "Edit in Window" menu item could have left the focus on the table rather than moving it to the resulting editing window. This has been fixed. This problem affected Linux systems only.
629458 Clicking the Close button in the title bar of the Query Editor was considered equivalent to clicking the OK button. This was incorrect; it should have been equivalent to clicking the Cancel button. This has been fixed.
629534 When executing stored procedures in the FROM clause, the performance of the statement was slower than previous versions. The effect was most significant for procedures that return many rows with very little execution cost in the procedure. This has been fixed.
629569 As of the changes made for Engineering case 568632, running a DESCRIBE statement in an Interactive SQL utility window always resulted in an error message. This has been fixed.
629577 For Unix versions, the server's usage display included incorrect values in the descriptions for the options -n, -p, -tl and -x. This has been fixed.
629595 Clicking the ">" buttons on the Editor customization dialog's "Print" tab could have caused the resulting popup menus to appear on the wrong monitor if the computer had two monitors. The problem occurred only if the Options dialog was open on the secondary monitor, and only if the secondary monitor was logically positioned to the right of the primary monitor. This has been fixed.

Note that this problem also affects Sybase Central.

629597 The initial position of the main window for the MobiLink Monitor could have placed the window underneath the Windows task bar. This has been fixed.

Note, this problem also affected the Interactive SQL utility, Sybase Central, and the SQL Anywhere Console utility.

629606 When using SQL Server Integration Services (SSIS), an attempt to migrate tables between SQL Anywhere/Sybase IQ and SQL Server databases would have failed. This problem has been corrected.

Note, if the Data Flow consists of more than 10 tables that are to be migrated to SQL Server from a SQL Anywhere server, the Personal server should not be used since each table is moved asynchronously on a separate connection (i.e., more than 10 simultaneous connections will be made to the SQL Anywhere server and the number of simultaneous connections is limited with the Personal server).

629758 The SAConnection.GetSchema method returned incorrect schema data for the DataTypes schema set and the DataSourceInformation schema set. This problem was found using the SQL Server Integration Service's Import and Export Wizard. This has now been corrected.
629759 A query that made use of index only retrieval could have returned incorrect results (too few rows) in some cases. This has been fixed.
629768 The file browser that opened after clicking the "Save" button in the Index Consultant did not prevent interaction with the wizard while it was open. This has been corrected so that it does.
630040 Messages in the Run Script window could have been truncated. The problem did not occur on all systems; it depended on the selected system font. The problem would have occurred on Windows for example, if "MS UI Gothic" was selected for the desktop icon font. This has been fixed.
630073 The contents of the combobox in the "Schedule Editor" window could have been truncated on some systems, depending on which font was being used by Sybase Central. This has been fixed.
630082 The "Apply" button in the client properties window (for a given server store) was not enabled correctly, and when it was enabled, it did not consistently apply the changes. This has been fixed.
630179 On the Connected Users or All Connected Users tabs, if two or more connections were selected, and clicked on File->Disconnect, then Sybase Central would have crashed. This has been fixed.
630210 If a GRANT or REVOKE statement was executed for a view which was currently invalid (e.g. because it referenced a table that has been dropped), an error indicating that the view was invalid might have been given. Now, the error is suppressed, but the view is still marked as invalid.
630219 On non-Windows computers, a proportional font was used when displaying results as text in the Interactive SQL utility. This prevented the columns from lining up correctly. Now, a monospaced font is used. On Windows computers, a monospaced font has always been used.
630225 The sql error message for SQLE_ TOO_MANY_COLUMNS_DELETED (SQLCODE -124) "More columns are being dropped from table '%1' than are defined" was misleading. It has been changed to "Dropping all columns from table '%1' is not allowed".
630226 If an ALTER TABLE statement had a DROP or ALTER column clause, and the column did not exist,

then an incorrect column name could have been reported in the error message. This only happened if there was another ADD, ALTER or DROP column clause in the statement. This has been fixed.

630338 If the option row_counts was set to 'On', the system procedures sa_performance_statistics and sa_performance_diagnostics did not return a result set, and the procedure sa_describe_query caused an assertion failed 109512 error. These problems have been fixed.
630359 The ASE label for the "GBK" character set has been changed from "CP936" to "cp936", as character set names passed to ASE APIs such as cs_locale() are case sensitive. The ASE version of character set labels is generally not used directly by SQL Anywhere, but is provided to users who need to use ASE libraries. Typically, a client would obtain the ASE label via a call such as db_extended_property( 'charset', 'ase' ).
630376 If a database being mirrored had been enabled for auditing and the mirror servers were restarted, no auditing operations were recorded in the transaction log. This has been fixed.
630392 The SQL Anywhere Console utility (dbconsole) would have displayed a message with the text "java.lang.NullPointerException" and an "OK" button if the "Options" window was opened before a connection had been opened. This has been fixed.
630403 Sybase Central would have crashed if the Agent Wizard was closed before any file browser that was opened from the wizard. This has been fixed.
630408 The method SAConnection.GetSchema() would have returned incorrect data. Database objects owned by system accounts were being included in the result sets. They are now excluded.
630475 If an application used the SQL Anywhere JDBC driver to obtain the ResultSet from a call to DatabaseMetaData.getPrimaryKeys(), then the driver would incorrectly return a ResultSet that was sorted by catalog, schema, table name and key sequence. This has now been fixed and the ResultSet is now sorted by column name instead.

Note that this fix is only for the SQL Anywhere JDBC driver. The iAnywhere JDBC driver will continue to return a ResultSet based on ODBC sorting standards.

630519 A query that referenced a view or derived table that contained a select list item that was not a table column could have caused a crash when executing using proxy tables. This has been fixed.
630522 The Interactive SQL utility (dbisql) could have crashed if more than one dbisql window was opened by clicking the "Window/New Window" menu item, the first window was close, then the "Preferences" item in the "Interactive SQL" menu was clicked. This bug also had the symptom of always showing the preferences for the first window, never for any of the subsequently opened windows. This has been fixed.
630527 The ApproximateCPUTime property would have grown in value for blocked connections if the property was queried. This problem was most noticeable for connections that were blocked for long periods of time and for whom this property was frequently queried. This has now been fixed.
630540 The method SAConnection.ServerVersion() has been changed to return normalized version strings that match the strings returned by SqlConnection.ServerVersion().
630542 In the SADataReader's schema table, , the SCALE property for Date, DateTime, DateTimeOffset, SmallDateTime, Time, Timestamp, and Timestamp with time zone columns, has been changed to 6.
630547 When updating an Oracle consolidated database schema for a Synchronization Model which had used a subset of owners for schema loading, by default the schema would have been loaded for all owners. Now the default is to use the same owner subset.
630884 On Mac OS X systems, the Interactive SQL utility was, in some cases, using reserved keystrokes for certain menu items and buttons. The following menu accelerators have been changed for Mac OS X only:

Menu Item New Accelerator

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

SQL/History Ctrl+Command+H

SQL/Previous SQL Ctrl+Command+LeftArrow

SQL/Next SQL Ctrl+Command+RightArrow

The following accelerators for buttons on the Spatial Viewer have been changed for OS X only:

Button New Accelerator

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

History Ctrl+Command+H

Previous SQL Ctrl+Command+LeftArrow

Next SQL Ctrl+Command+RightArrow

Save Image Command+S

Hide SQL Shift+Command+H

Zoom In Command+Plus

Zoom Out Command+Minus

Reset View Command+R

Draw Outlined Polygons Command+P

The tooltips for the above buttons now display the correct key name as well. Previouly, the tooltip displayed the Windows/Linux/Solaris accelerator key name instead of the Mac one.

630890 In very rare situations, the server may have crashed when executing a statement that contained a large number of UNION, EXCEPT or INTERSECT clauses. This has been fixed. These statements will now return the sql error "Statement size or complexity exceeds server limits".
630897 If a SQL favorite contained a TAB character, it could have prevented some, or all, of the other favorites from being loading, and they would have been lost. This has been fixed.
630909 Calls to the method SADataAdapter.Update() in batch update mode would have hung when updating large tables. This has been fixed.
630911 Some result sets returned by by the method SAConnection.GetSchema() were not sorted. This has been corrected.
630913 If some columns had been dropped from a table, SAConnection.GetSchema( "Columns" ) could have returned incorrect ORDINAL_POSITION values for that table. This has been fixed.
631004 The range for a correlation coefficient is between -1 and +1, however the corr() system function returned only positive values. This has now been corrected.
631009 Changes made to an agent's properties would not have been made permanent after clicking any of the items in the agent's "Set" menu. A similar problem affected changes made in the property sheet for a remote database to the description or the agent's connection string. These have been fixed.
631017 If an application attempted to create a proxy table to a Microsoft SQL Server table which contained a varbinary(max) column, then the server would have incorrectly mapped the varbinary(max) column to varbinary(1). This problem has now been fixed and the server now correctly maps varbinary(max) columns to long varbinary.
631018 A newly-created remote task command might not have been saved when a different tree item was selected. This happened very occasionally, and has been seen only on Linux computers. This has been fixed.
631019 Two issues relating to using the INPUT and OUTPUT statements (and their corresponding wizards) to move data between SQL Anywhere and ASE have been fixed.

Importing a table from ASE which had TIMESTAMP columns into a new table would have failed. The ASE TIMESTAMP type was being misinterpreted as being equivalent to the SQL Anywhere TIMESTAMP type, which is false.

Exporting data from SQL Anywhere into ASE would have reported various conversion issues for SQL Anywhere DECIMAL values.

631022 When creating an ODBC DSN from the Connect dialog, the prompt that warned that the DSN already existed had a Cancel button. It should not have and has been removed.

Also, clicking the close button (the "X" in the toolbar) aborted the entire process of creating the DSN; now, clicking the close button is the same as clicking the "No" button, which leaves the "Saves as ODBC Data Source" window open.

631023 SA Clients on Mac OS X systems would have received the error "TLS handshake failure" (SQLCODE -829) when attempting to connect using TLS/RSA to a server running on a different operating system. This has been fixed.

Note: Engineering case 626480 included new versions of the Certicom and OpenSSL libraries. This problem only affects Mac OS X clients with these new libraries connecting to servers on a different operating system also with these new libraries.

631026 When using the ADO.NET provider to insert long binary, varchar or nvarchar values with a SQL_BINARY, SQL_VARCHAR or SQL_NVARCHAR parameter type, the parameter type that is passed to the server will be changed to SQL_LONGBINARY, SQL_LONGVARCHAR or SQL_LONGNVARCHAR if the length of the value to be inserted is greater than 32767 bytes.
631028 Creating the first user DSN by clicking the "Save as ODBC Data Source" Tools button could have silently failed. This has been fixed.
631030 Databases could not have been created on SD cards and the internal flash of some older RIM devices. There were two problems in the RIM Operating System late in the 4.2.1.x versions, extending to the 4.2.2.48 version, that would have caused problems creating databases on these devices. An input stream could not have been opened until something had been written to the file, and the database file would have been destroyed on the second write to the start of the file. These problems were resolved by reprogramming some of the support for these devices so that the problems were not encountered.
631033 Starting in version 12.0.0, on Windows computers numbers are now formatted with the thousands separator that is shown in the Windows Control Panel. With this fix, thousands separators are not shown at all if they have been turned off on the Control Panel. Previously, they were always shown.

Note, this fix also affects the "Data" tab for tables and views in Sybase Central.

631045 If an application attempted to establish a connection using the ASADataSource class available with the SQL Anywhere JDBC driver, then the application would have received a ClassCastException. This problem has now been fixed.

Note that in addition to supporting the ASADataSource class, the SQL Anywhere and iAnywhere JDBC drivers now offer an SADataSource class as well.

631096 If deleting a Remote Schema Name failed for any reason, it was still removed from the project. Now, it remains in the project.

In a related issue, if the Remote Schema Name cannot be deleted because there are agents still managing databases with that Remote Schema Name, an error message is now shown explaining that condition as plainly as possible. Previously, the underlying error message from the consolidated database was displayed, which was not helpful.

631104 Checking the "Enable Agent logging" checkbox on the "Logging" page of an Agent Configuration File property sheet enables six more check boxes allowing for specifying what kind of messages are to be logged. Previously, the options in the file were not read correctly so that none of those six checkboxes were ever checked, even though the configuration file was correct. This has been fixed.
631113 Attempting to execute a CREATE OR REPLACE PROCEDURE statement could have caused a server crash. This has been fixed.
631119 If the empty string was passed into an SQLNativeSQL or SQLPrepare function, it was possible for the iAS Oracle ODBC Driver to have crashed. This has been fixed. The SQLPrepare function will now return the error "Invalid string or buffer length", and the SQLNativeSQL function will now simply set the out parameters to the empty string as well.
631122 After right-clicking a procedure or function and selecting "Execute from Interactive SQL", the resulting dialog where the parameters are specified had a row height for the table that was too small. This caused text to be clipped in the "Value" column. This has been fixed.
631141 Clicking the "Data>Show Results as Scrollable Table" or "Data>Show Results as Text" menu items did not make the setting permanent, which could have lead to the wrong format being used when disconnecting and then reconnecting without stopping Interactive SQL. This has been fixed, now these menu items exactly correspond to the "Scrollable table" / "Text" options in the "Options" window, which was the original intent.
631147 When creating or altering a spatial reference system, the catalog table SYSSPATIALREFERENCESYSTEM.storage_format column contained the case of type from the statement instead of the normalized case. For example, with a statement such as the following the server would have stored 'oRiginal' instead of 'Original'.

create or replace spatial reference system "WGS84_orig"

identified by 50000

type round earth

storage format 'oRiginal'

This has been corrected so that the case is normalized.

631148 When Sybase Central is shut down, it closes any Interactive SQL windows which were opened from within Sybase Central. Part of that closing process may prompt the user to save unsaved changes, or may remind them that closing Interactive SQL will also close any Plan Viewer or Spatial Viewer windows. On Linux systems, if the Interactive SQL window was obscured by Sybase Central when Sybase Central was closed, the prompts could have been hidden by the Sybase Central window. Unless the Interactive SQL window was activated, or the Sybase Central window was moved, the prompts would have been hidden and Sybase Central would not have closed. Now, the Interactive SQL windows are activated and any prompts should appear on top of the Interactive SQL window(s).
631234 It was possible to create a Remote Task with an empty name (which is generally not allowed) by pasting it and then clearing the Name field in the resulting "Paste" dialog. The same problem also affected the pasting of groups. This has been fixed.
631249 The result sets returned by calls to SAConnection.GetSchema( "Columns" ) and SAConnection.GetSchema( "DataTypes" ) could have been incorrect. This has been fixed.
631253 In the property sheet for a Relay Server farm, if a custom command line for the Relay Server Outbound Enabler was specified, it was not displayed when the property sheet was subsequently opened. This has been fixed.
631269 The Interactive SQL utility could have reported an internal error if the SRID was changed on the "Spatial Preview" tab in the column value window. The problem was most likely to happen if the SRID was changed faster than the database server was able to render the spatial value. This has been fixed.
631280 The MobiLink Server could have hung or crashed on MacOSX 10.6 systems when the server was run as a daemon (using the -ud command line option). This has been fixed.
631330 Some inconsistencies between SQL Anywhere OLE DB column metadata information and run-time column information caused problems with accessing tables via the Microsoft SQL Server "Linked Server" mechanism. These problems affected NCHAR, NVARCHAR,LONG NVARCHAR, VARBIT, LONG VARBIT, and TIMESTAMP WITH TIME ZONE columns. The TIMESTAMP WITH TIMEZONE data type is new to version 12.0.0. These problems have been fixed. Table rows inserted using the OLE DB OpenRowset/InsertRows methods are now done with autocommit turned off. Once the inserts are completed, the rows are committed.

For the complete fix to this problem, use the Upgrade utility (dbupgrad) to upgrade existing databases with fixes for the OLE DB schema rowset support (metadata support).

631404 The NOT NULL FOREIGN KEY clause was misdiagnosed as invalid in ALTER TABLE statement. This was been corrected.
631405 If a result set contained a column with ROWID values, the iAnywhere Oracle driver would have returned invalid OUT parameters from calls to SQLColAttribute for the SQL_COLUMN_TYPE and SQL_DESC_DISPLAY_SIZE identifiers. As a workaround, the select statement could use ROWIDTOCHAR(ROWID) instead of ROWID. This has been fixed so that the calls to SQLColAttribute will now describe the column in the result set as a SQL_WCHAR of length 18.
631475 Calls to some system procedures may have caused an server crash if null arguments were used. This has been fixed.
631479 Spatial methods could have been used in queries in contexts that should not have been allowed, and no error was given. Instead, an invalid answer was returned.

For example, the following query was permitted while it should be rejected:

select count(*), geometry.ST_Envelope()

from ( select row_num, new ST_Point( row_num, row_num, 0 ) geometry from rowgenerator ) D

This has been fixed.

631482 On Linux systems, the main DBConsole window would still have been active when the initial "Connect" window was displayed. This would have allowed two "Connect" windows to be open at the same time; the subsequent behavior was not well-defined. This has been fixed so that the main window is now not active when the "Connect" window is open.
631484 Execution of an ALTER TABLE statement, could have corrupted the table after deleting and committing some rows from it. This has now been fixed.
631493 Clicking a variable name, after clicking the "Variables" button in the Remote Task wizard or property sheet, would have incorrectly resulted in a beep. Now, clicking the variable name inserts the variable name into the "SQL Condition" field.
631525 If a cursor was opened over a query containing a call to the system procedures sa_rowgenerator() or sa_reserved_words(), and the cursor was moved forward and backwards, the server could have returned inconsistent results. The scrolling could have happened implicitly as a result of prefetch and re-fetching columns (for example, using GET DATA). This has been fixed.
631633 The width of the "Search" field in the Deploy Remote Task wizard could have been so small that the component was unusable. This did not happen on all computers, and was dependent on which font (and size) the computer was configured to use. This has been fixed.
631640 In very rare cases, the server could have crashed if a database shutdown request was received at the same time that an active connection on the same database executed an external environment call. This problem has now been fixed.
631643 Changes made for Engineering case 585456 caused the queue lengths in the Utilization Graph of the MobiLink Monitor, the RAW_TCP_STAGE_LEN, STREAM_STAGE_LEN, HEARTBEAT_STAGE_LEN, CMD_PROCESSOR_STAGE_LEN metrics printed by the -ppv option, and the queue lengths available in the SQL Anywhere Monitor, to possibly have been reported as larger than they actually were. These issues have been fixed.
631647 On Linux systems, opening a window to view a long column value could have caused increased CPU usage, or could have caused dbisql to crash. This problem was intermittent, and depended on how busy the system was when the window was opened. This has been fixed.
631669 Attempting to deploy a remote task to a consolidated database to which connection was not possible wou8ld have resulted in an assertion failure message. This has been fixed so now an error message is displayed saying that the connection failed.
631672 In the Create MobiLink Agent wizard, if creating agents from a file was elected and the file was previewed, then a different file was selected, the preview page was not updated to show all of the agent names in the new file. This has been fixed.
631731 When starting the MobiLink Monitor with the -o or -c command line options, the result of the session should have been saved when the MobiLink server terminated, or the user manually disconnected from the MobiLink server. In the latter case, the output was not being saved and the Monitor was not shutting down. This has now been fixed.
631733 When connecting the MobiLink Monitor to a MobiLink server, any authentication error resulted in a poor error message from the Monitor, like:

"Got unexpected data when receiving authentication result. Check version of MobiLink server (opcode=0)"

This has been fixed to provide more information on the problem. The most common authentication error is now:

"Invalid userid or password (auth_status=NNNN)"

Other errors, for example due to an expired password, are similar.

631774 The server could have crashed if lock contention was high. This has been fixed.
631777 The Command Editor was inadvertently shown after clicking "Select All" while a tab other than "Commands" was selected for a deployed remote task. This has been fixed.
631781 The text completer could have failed to suggest column names at the end of a dotted expression if the SQL statement spanned more than one line. For example, if the completer was opened at the end of the following statement:

SELECT * FROM customers C

WHERE C.

it should have suggested the columns in the "Customers" table, but it did not. This has been fix so that now it does.

631797 If a column CHECK constraint was defined using references to other columns, it was not being handled as a table CHECK constraint. This has been fixed.
631798 The Procedure Browser window could have crashed if there were no procedures listed, and the mouse was moved over the empty list. This has been fixed.
631800 Queries involving spatial predicates ST_Intersects or ST_IntersectsRect would have missed certain optimization oppotunities when operating over small geometries, or geometries with minimal surface area. This has been fixed. For example, performance of the following query was likely to improve as a result of this change:

select geometry

from table_containing_ST_Curves

where geometry.ST_IntersectsRect( new ST_Point( 0, 0 ), new ST_Point( 10, 10 ) ) = 1;

631890 If an outer join had a materializing operator on the null-supplying side (for example a work table or a sort), then the performance could have been slower than it could have been because expressions from the tables under the null-supplying side were materialized when they were not needed above the join.

Also, the server could have crashed while executing a plan with an outer join if the null-supplying side contained an IN-list with either NUMERIC or string values.

These problems have now been fixed.

631897 In extremely rare timing dependent cases, if a communication error occurred on a connection with the dedicated_task option set in a mirroring configuration, the server could have crashed, asserted or hung. The fix for Engineering case 628436 missed this situation, which has now been fixed.
631904 If a server or database was started with a space in the name, then attempting to start external environments would have failed. This problem is specific to servers running on Windows based systems, and has now been fixed..
631946 An error on startup of the MobiLink server on Mac OS X systems, would have displayed text that was prefixed by random characters and/or yellow highlighting. This has been corrected.
632040 On 64-bit systems, it was possible for the JDBC driver to crash if some statement attributes were queried. This has now been fixed.
632048 If a view or derived table was used on the null-supplying side of an outer join it was possible for the expression to return a non-NULL value for a row of the view that should have been null-supplied. This would have occurred if one of the view columns contained one of the following expressions:

- user-defined function

- argn

- http_header

- http_response_header

- http_variable

- isdate

- isnumeric

- next_connection

- next_database

- next_http_header

- next_http_response_header

- next_http_variable

- next_soap_header

- patindex

- soap_header

- stuff

For example, the following queries would have incorrectly returned a non-NULL value for the column "b" of the derived table "D":

select *

from rowgenerator left join ( select dummy_col , argn( 1, 137, dummy_col ) b from sys.dummy ) D on 1=0

where row_num=1

select *

from rowgenerator left join ( select dummy_col , isnumeric( dummy_col ) b from sys.dummy ) D on 1=0

where row_num=1

This has been fixed.

632050 If a Java external environment had been started for a particular database, and a connection on that database accidentally attempted to drop the SYS.DUMMY table, then the connection would have hung instead of giving the expected "permission denied" error. This problem has now been fixed.

Note that this problem does not exist for external environment other than Java.

632174 The Foreign Key wizard could have caused Sybase Central to crash when creating a second

foreign key on a table, if the creation of the first foreign key on the table had automatically added a new column to the foreign table. This has been fixed.

632177 The text completer would not have suggested any names following a string of the form "owner.partialTableName" if "owner" was the same as "partialTableName". This would have occurred when trying to complete the name of a system table, e.g.:

SELECT * FROM sys.sys

This problem would have affected text completion in SELECT, DELETE, and UPDATE statements and has now been fixed.

632219 The MobiLink server running in a server farm against the cluster edition of a consolidated database, would have shutdown too quickly when the node the MobiLink server was connecting to was killed or shut down. This problem has been fixed. When the MobiLink server detects the database connection unusable, it will now attempt to re-establish a connection and pause for 1 second before each retry. By default, the number of retries is 3. Therefore, it would allow the ODBC driver to switch the MobiLInk server database connections to another node within 3 seconds. If the failover of the consolidated database takes more than 3 seconds, the MobiLink server command line option -cr <num> can be used to change the number of retries.
632314 When the server is started with no command line arguments, a "server startup options" dialog is presented which includes a "Browse..." button to choose the database file. When Browse... was clicked, a non-modal file-open dialog was launched which meant that the "server startup options" dialog could be closed while the file-open dialog was still open. The file-open dialog is now modal and must be closed first.
632315 The START JAVA statement would have failed when the server was started through the GUI (DBLauncher) on Mac OS X 10.6. This has been fixed. Servers started via the command line interface (Terminal.app) do not have this problem.
632340 Executing a LOAD TABLE statement on Mac OSX systems would have failed with the error -134 (feature not implemented). This has been fixed.
632342 Under rare circumstances, the server may have hung while diagnostic tracing was enabled. This has been fixed.
632353 If the server acting as the primary server in a mirroring system was shut down at the same time as it lost quorum due to a dropped mirror connection, the database on the primary could have been improperly checkpointed, resulting in a failure to recover on the next startup. Also, if a mirror server was starting at the same time the primary server was stopping or restarting, the mirror server could have received log operations that were not written on the primary. This would have resulted in an "incompatible files" message the next time the mirror connected to the primary, and would have forced the database and log to be manually recopied. Both of these problems have now been fixed.
632359 For 11.0.1, ECC curve support for MobiLink end-to-end encryption has been reduced to the same 7 ECC curves supported by the createcert and createkey utilities and by SA's TLS support.

For 12.0.0, ECC curve support for end-to-end encryption, the createcert and createkey utilities, and for the TLS protocol for both MobiLink and SA, has been extended to support the 15 curves recommended by NIST:

sect163k1 sect283k1 sect571k1 secp256r1

sect163r2 sect283r1 sect571r1 secp384r1

sect233k1 sect409k1 secp192r1 secp521r1

sect233r1 sect409r1 secp224r1

632362 If a connection set the dedicated_task option to 'On', then there was a chance a request for this connection would have hung. This was more likely for connections where many requests are sent one after the other. This has been fixed.
632401 The SQL Anywhere JDBC driver has provided support for PreparedStatement.setBlob(), ResultSet.getBlob() and ResultSet.getClob() for some time now; but support for PreparedStatement.setClob() was not available in the SQL Anywhere JDBC driver until now. The SQL Anywhere JDBC driver now supports two of the three PreparedStatement.setClob() methods. They are:

PreparedStatement.setClob( int parameterIndex, Clob x ), and

PreparedStatement.setClob( int parameterIndex, Reader reader, long length )

However, support for the method:

PreparedStatement.setClob( int parameterIndex, Reader reader )

is still not available in the SQL Anywhere JDBC driver.

It should be noted that when using the PreparedStatement.setClob( int parameterIndex, Clob x ) overload, the user supplied Clob implementation only needs to support the Clob.length() and Clob.getCharacterStream() methods. Also, for large strings and large character streams, the new PreparedStatement.setClob() methods within the SQL Anywhere JDBC driver are preferable over the PreparedStatement.setString() and PreparedStatement.setCharacterStream() methods in terms of both performance and memory usage.

632413 On Vista and later versions of Windows, the Windows Performance Monitor utility (perfmon) could not have monitored a database server which was running as a Windows service. This problem has been fixed.
632417 If a Java or CLR external environment had been started, and an application then attempted to execute an "alter database upgrade" command, or if the Upgrade utility (dbupgrad) was run, then the upgrade would have failed due to the fact that the database was still in use by the external environment(s). This problem has now been fixed and the external environments will now be shut down provided they are idle at the time the database upgrade is attempted.
632434 Version 11.x of the Relay Server is not compatible with version 7 of Microsoft's Internet Information Server (IIS7). The Relay Server has now been updated to support IIS7. New IIS7 set up instructions will be available in %sqlany11%\MobiLink\RelayServer\IIS\iis7_setup.txt.
632435 When copying cells from a result set, a newline character was inadvertently added to the copied value, even if cells from a single row were copied. This newline has been removed in those cases.
632436 The Tip of the Day which referred to the Connect Assistant has been removed. The Connect Assistant was removed in version 12.0.0.
632438 When running the Unload utility to create a new database with the same settings (dbunload -ar), it may have immediately failed with the error "Too many connections to database being replaced". This would have been rare, and retrying the unload would likely have resulted in success. This has been fixed.
632446 The MobiLink server stream options set in the Deploy Synchronization Model wizard would not have been set in the batch file created to run the MobiLink server. This has been fixed. A workaround is to edit the generated batch file to add the stream options.
632488 If the option Optimization_goal had the setting 'First-row', then validating a table would have been extremely slow, whether validating with the Validation utility, or with a VALIDATE statement. This has been fixed

A work-around is to set the optimization goal to 'All-rows' before validation.

632516 The Remote Task wizard offered three unsupported options for the battery level condition: "Less than 25%", "Less than 50%" and "Less than 75%". These options have now been removed from the wizard.
632519 Changes made to INOUT script parameters in .NET scripts were ignored unless the script accepted all the possible parameters for the event. This has been fixed.
632526 The Plan Viewer window could have opened with a width that was wider than the monitor if the "SQL Statements" field contained a SQL statement which was itself longer than could be displayed on the monitor. This has been fixed.
632530 The UltraLiteJ Database Unload utility (ULjUnload) would have output control characters (other than \t \r \n) or non-ASCII characters (>= \u007f) into its XML output without escaping them. This would have made the resulting XML file unreadable by many tools, including the UltraLite Load XML to Database utility (ulload). This has been fixed.
632538 If an error window (or any other modal window) was open, it was impossible to close any Interactive SQL window, even if the error window was not owned by the Interactive SQL window that was attempting to be closed. This has been fixed.
632545 Pressing a non-character key (e.g LeftArrow, Alt, Space, etc.) could have inserted a hollow box character to the SQL Statements field. This has been fixed.

This problem was more readily seen on Linux systems than on Windows.

632608 The performance for fetching BLOB columns was much slower compared with the managed OLE DB provider. This problem has been corrected.
632612 The iAnywhere ODBC driver for Oracle could have crashed, if an application made a request to convert an invalid SQL statement (for instance, a SQL statement containing a '{' that was not followed by 'call') to native SQL by calling SQLNativeSQLW. This has been fixed.
632627 Database documentation that was generated from the SQL Anywhere plug-in for Sybase Central would not have shown scroll bars when viewed with the Safari browser. This has been fixed.
632640 When deploying a Synchronization Model to an UltraLite database on Mac OS X systems, it would have failed with the error "Cannot create an UltraLite database because the ulinit utility can only be run on Windows and Linux." Mac OS X systems are supported, so this error is no longer raised, and the message has been updated to include Mac OS X as well.
632732 On Unix systems, the Performance Statistics utility (dbstats) could not have monitored a database server that was running under a different user id. This has been fixed.
632736 On Mac OS X systems, Sybase Central would have crashed when importing a configuration file and clicking the "Save" button. This has been fixed.
632739 On Mac OS x systems, the "..." button in the result set table was several times wider than it should have been. This has been corrected.
632743 The text fields on the second page of the Index Consultant were too narrow to display even their default values. This problem was most apparent on Mac OS X systems, although it could also have occurred on any platform if the font used by the application was sufficiently large, or if the look-and-feel for that platform had a wide border for text fields. This has been fixed.
632766 The Table Mapping editor was missing a "Download Delete Subset" cascading menu, which meant it was not possible to set the download delete subset setting for multiple table mappings in a single operation. This has been fixed.
632770 When deploying a configuration file to multiple servers, the window titled "Deploy Configuration" could have stayed open indefinitely with the last status line "Checking Relay Server configurations". This would have happened if the security token for any backend server was empty. This has now been fixed.
632776 The descriptions for Relay Servers were always shown as empty in the "Deploy Configuration File" window, even if they were not empty. This has been fixed.
632869 Using the -ppv command line option ("print periodic performance values") could have degraded the MobiLink server's performance if there were many unsubmitted error reports. This was most noticable when using -ppv 1, and there were more than one thousand unsubmitted reports. This has been fixed by removing the NUM_UNSUBMITTED_ERROR_RPTS value from the -ppv output. The number of unsubmitted error reports can still be found by using the SQLAnywhere Monitor for MobiLink, or by counting the lines output by "dbsupport -lc".
632873 Concurrent updates to an IMMEDIATE REFRESH text index may have corrupted the index. This has been fixed.
632874 Under very rare circumstances, sequential scans of tables that had rows deleted within the past minute may have returned too few rows. Subsequent scans of the table would have returned the correct number of rows.

This has been fixed.

Note, this problem was extremely rare in builds prior to the changes made for Engineering case 625189, it would have been slightly more likely in later builds, due to increased frequency of cleaner invocation.

632875 The server would have crashed if a client application attempted to connect while the

server was shutting down after failing to start. This has been fixed.

632880 On Mac OS X systems, the Add, Edit, Delete, Update and Cancel Row toolbar buttons were too small (16x16 rather than 32x32). This has been fixed.
632889 When using the iAS Oracle ODBC Driver, a call to SQLGetStmtAttr that queried the SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_CURSOR_SENSITIVITY or SQL_ATTR_QUERY_TIMEOUT attributes could have returned a random value for the attribute. The driver now throws an "Optional feature not implemented" error (SQL State HYC00) for the SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, and SQL_ATTR_CURSOR_SENSITIVITY attributes. When the SQL_ATTR_QUERY_TIMEOUT is queried, a zero is returned, and no error is reported.
632893 The MobiLink replay utility could have crashed when concurrent connections to the MobiLink server were made on non-Windows systems. This has been fixed.
632902 Attempting to add or update a row in a table by using a file to supply a column value, could have crashed Sybase Central (or silently failed with the Interactive SQL utility), if the file contents were larger than the database column could hold. This has been fixed.
632984 Use of the -f (or --filedir) command line option on the UltraLite Unload Database utility (ulunload) would have mangled the specified directory. This would have prevented the utility from functioning properly, and generated an error similar to the following:

Error: Cannot open data file �<mangled characters>� for table T

This has now been fixed. A workaround is to store BLOB/CLOB data in the current directory.

632988 It was possible for the MobiLink Server Log File Viewer to crash when selecting the "Messages" or "Summaries" tab for the first time. This crash would have happened only very rarely, and has now been fixed.
633000 When editing a DECIMAL value, the editor could have truncated some of the least significant digits from the initial value. Now, those digits are preserved.
633003 Attempting to execute an UPDATE statement on a table with multiple indexes and lazy loading, could have failed in various ways by throwing Java exceptions. This was corrected
633007 The following English error message could have been logged in the MobiLink server log on a non-English system:

"Error canceling message. Cannot cancel a message that has already been downloaded to its recipient or is in a final state." This message has now been localized.

633011 The Login Mapping wizard's last page did not always display the current login_mode option setting correctly. This has been fixed.
633015 If an application called a Java external environment procedure that returned result sets, then those result sets would not have been cleaned up for a long time after the application was done with them. The result sets now get cleaned up in a more timely fashion.
633019 It was not possible to edit BIT values in the "Results" panel. This has been fixed.
633021 When using the external system procedure xp_startsmtp, if the SMTP authentication failed the server would not have closed the TCP connection to the SMTP server. This has been fixed.
633031 Sybase Central could have silently crashed on startup if an OEM.INI file was installed which contained an entry before a section header. This has been fixed; the entry is now ignored.

Note, this problem also affected the Interactive SQL and Console utilities, as well as the MobiLink Monitor.

633032 Replicating a "Point EMPTY" geometry object via Mobilink could have reported errors. In particular "Spatial library error: 25" could have been reported. This problem has been fixed.
633041 When running the UltraLite sample application on a Windows desktop, if no employee ID had been entered, a dialog is presented where one can be specified. Clicking on 揅ancel� would have resulted in nothing happening. Now, the dialog box will be canceled when 揅ancel� is clicked.
633117 The following issues have been fixed for queries that bypass the optimizer:

1. the number of cached pages for an index was not saved for the graphical plans

2. complex expressions used in the WHERE clause may have produced different errors than the optimizer

3. predicate selectivities were not normalized, this was a different behaviour than the optimizer

633118 The Deployment Wizard did not deploy V3.5 and V4.0 .Net assemblies. They have now been added to the list of files we deploy.
633120 Microsoft's SQL Server 2005/2008 Replication software allocates a 0x200 byte buffer for the TYPE_NAME column of the DBSCHEMA_PROVIDER_TYPES rowset. It then creates a DBBINDING structure identifying the length of the buffer as 0x300 bytes. When the SQL Anywhere OLE DB provider initializes the buffer with nulls, a stack overrun occurs and Microsoft's Replication software faults. As a work-around for Microsoft's bug, the SQL Anywhere OLE DB provider will no longer initialize the consumer's buffer with nulls.
633125 Improvements to the DBSCHEMA_PROVIDER_TYPES rowset have been made to make it more consistent with Microsoft SQL Server.
633132 If the Interactive SQL utility, Sybase Central, or the Console utility had been redeployed (i.e. installed by any means other than the standard SQL Anywhere product installer), the ability to check for software updates was still presented to the user, but there was no way for it to make the check. Attempting to check for updates would have opened a status window which would say that it was analyzing the installed software, but would never have completed. Checking for software updates is supported only from the Interactive SQL utility, Sybase Central, or the Console utility which has been installed by the SQL Anywhere installer. Now, if redeployed software is run, the following changes to the user interface will be made:

1. (All) The Help menu items related to checking for updates are removed

2. (Interactive SQL utility) In the "Options" window, the "Update Checker" tab is removed for SQL Anywhere and UltraLite.

633147 Text indexes are now supported on materialized views.

The following syntax is used to create a text index on an an immediate or a manual materialized view:

CREATE TEXT INDEX [ IF NOT EXISTS ] text-index-name

ON [ owner.]imv-name( column-name, ... )

[ IN dbspace-name ]

[ CONFIGURATION [ owner.]text-configuration-name ]

[ IMMEDIATE REFRESH ]

Once a text index on a materialized view is created, it cannot be refreshed or truncated. The only

operation a user can perform on the text index is DROP. The text index on a materialized view will

be maintained by the server whenever the underlying materialized view is refreshed or updated.

If the materialized view is altered - for example, immediate materialized view is converted to manual -

the text index changes accordingly.

633152 The window used to display a single cell value in a result set could have been too narrow to view the components it contains. The text which gives the length of the value could be abbreviated with an ellipsis, or hidden altogether on a system using a Japanese character set. The same thing could have happened regardless of the character set if certain large sized fonts are used as the computer's default font. This has now been fixed.
633155 When deploying a Synchronization Model on Linux, Unix or Mac systems, the .sh files generated for the MobiLink server, remote database, synchronization client and consolidated database could have failed if command-line options (such as a connection string) or deployment options (such as the MobiLink server name) contained spaces. This has been fixed. The options are now quoted in the generated .sh files. A workaround is to edit the generated files to quote the options with spaces.
633229 Execution of a SELECT ... INTO table_name statement would have failed with "Syntax error near '('" if the source query contained UNIQUEIDENTIFIER columns and the statement was attempting to create a permanent table. This has been fixed.
633232 The server could have crashed under certain circumstances where malformed data existed in the database, and an attempt was made to generate statistics over this data either implicitly or explicitly. Customer applications that do not insert this malformed data are not likely to be impacted. The server now treats malformed data as NULL for the purpose of statistics collection.
633243 If an ASE consolidated database was added to a project, it would have been shown as a "SQL Server" database in the user interface. Now, the database type text is "Adaptive Server Enterprise".

This affects the following parts of the UI:

1. The "Product" column on the "Consolidated Databases" tab

2. The property sheet for a consolidated database

3. The "Display Name and Description" page of the Add Consolidated Database Wizard

4. The "Consolidated Database Schema" page of the Create Synchronization Model Wizard

5. The "Consolidated Database Deployment Destination" page in the Deploy Synchronization Model Wizard

6. The "Consolidated Database Schema" page of the Update Schema Wizard

633257 When synchronizing a table with NOT NULL LONG BINARY or NOT NULL LONG VARCHAR columns, downloading an update to such a column could have resulted in an UljException -300 "Run time SQL error -- fatal". This has been fixed.
633268 The changes for Engineering case 632526 may have caused the "SQL" field in the Plan Viewer window to become unusably short after the "Get Plan" button was clicked. This has been fixed.
633269 Attempting to deploy a task containing characters that were not supported by the consolidated database, would have crashed Sybase Central. For example, setting a task description containing Japanese into a latin1252 database. The crash has been fixed. The new behavior in this situation depends on the consolidated database. In most cases the string will be degraded with the unsupported characters replaced. MYSQL will raise an error.
633275 If a database mirroring server was shut down via the console (or via a HUP signal on Unix), it could have hung. This has been fixed. As a workaround, use the Stop Server utility (dbstop) to stop the server.
633364 The Moblink server could have randomly, although rarely, reported the error:

"Stream Error: Mismatched end-to-end encryption keys"

when establishing an end to end encryption link with Ultralite on the iphone. This has been fixed.

633371 The Interactive SQL utility (dbisql) would not have started when using the -nogui command line option on a Linux computer which did not have a graphical environment. This has been fixed.
633373 If a procedure used in the FROM clause of a statement was inlined, crashes or incorrect errors may have been reported if the following conditions hold:

1. the procedure contains a single statement having common table expressions (CTEs) defined using WITH [RECURSIVE] clause.

2. the procedure parameters are used inside the CTEs in any expression (e.g., WHERE predicate, select list item, etc.)

3. the procedure parameters are outerreferences in the FROM clause

This has been fixed. The workaround is to add an extra statement inside the procedure to make it not a candidate for inlining (e.g., " if 1 = 0 then return end if;")

CREATE PROCEDURE CRASH ( @databaseid INTEGER, @tableid INTEGER, @rowid BIGINT )

WITH RECURSIVE SIMPLE

( databaseid, tableid, rowid, mtableid, mrowid, stableid, srowid ) AS

(

SELECT databaseid, tableid, rowid, stableid, srowid, stableid, srowid

FROM ATABLE

WHERE databaseid = @databaseid AND stableid = @tableid AND srowid = @rowid

UNION ALL

...

SELECT databaseid, changeno, rowchangeno

FROM T rc

WHERE EXISTS (SELECT * FROM CRASH( rc.databaseid, rc.tableid, rc.rowid ) )

633376 In the Create Synchronization Model wizard, if a download subset was setup by user or remote ID using a joined table, and the joined table was also synchronized, then the download subset clause generated for that table would have joined the table to itself. This has been fixed. A workaround is to change the download subset in the table mapping editor to not use a joined relationship table.
633379 The Interactive SQL utility would have crashed if the "Approximate" box in the Spatial Viewer window was checked before a query had been entered. This has been fixed by disabling the box when appropriate.
633465 Under rare circumstances, Application Profiling or diagnostic tracing could have caused the server to crash when the application being profiled used UPDATE statements with complex FROM clauses. This has been fixed.

A workaround is to avoid capturing the PLANS_WITH_STATISTICS level.

633470 The SQL Anywhere Monitor launcher now includes support for a new switch, "-t", which will start the Monitor Developer Edition with TLS (i.e. HTTPS). In order to use this new feature, you an encryption certificate is needed along with its associated password.

The parameters for this switch are as follows:

-t <Encryption Certificate> <Certificate Password>

Where <Encryption Certificate> is the fully-qualified path to an encryption certificate and <Certificate Password> is the password for the certificate.

For example:

C:\> samonitor.exe -d C:\path\to\db\samonitor.db -t C:\path\to\cert\cert.cer myPassword

Note that this switch is not supported with the Production (i.e. Standalone) Edition of the Monitor.

633486 Dragging and dropping within the Favorites sidebar did not work consistently and have been fixed. Specifically, the following actions did work correctly:

1. Dropping at the end of the list did nothing. Now the dragged item is moved to the end of the list.

2. Dropping an item to a location farther down the list would move it one higher than the indicated drop location. Now items are dropped where indicated.

633488 On Unix systems, a process's address space can be limited by using "ulimit -v" or by various methods of setting system-wide defaults that are dependent on the version of Unix. The 64-bit SQL Anywhere server was not taking that limit into account when computing a maximum cache size and insufficient address space would have been left available for the server's other address space needs. This problem has been fixed.

Note, this issue is similar to Engineering case 586837, but only affects version 12.0.

633490 The samonitor.sh file used to start and stop the SQL Anywhere Monitor on Linux was missing a "launch" option in the Developer Edition. This has been fixed. The "launch" option can be used to both start the SA Monitor and open up a web browser to the Monitor's web interface at the same time, rather than requiring the user to go through two separate steps.
633503 When attempting to name or rename a task, if the new name contained characters that were not allowed in a file name (e.g. "\" or "?"), the property sheet for the remote task would simply refuse to close without explanation. This has been fixed so that an error message is now displayed.
633520 The "Rows awaiting upload" checkbox was enabled in the property sheet for a Remote Task even if that task was associated with a Remote Schema Name for a SQL Anywhere database. Now, the checkbox is disabled in this case.
633524 When running application profiling, or manually diagnostic tracing with host variables, the server may have hang. This has been fixed. A workaround is to avoid enabling the host-variable tracing level.
633527 When creating a Remote Task or when setting a task's properties checking the "AC Power" checkbox, and selecting "Computer is running on AC power" from a combobox, was required to specify that a task should run only when the remote computer was running on AC power. Now, the combobox has been removed and the checkbox text simply says "Computer is running on AC power".
633600 Some Visual Studio integration related problems were not handled by SetupVSPackage.exe, but were problems caused by SA installer when installing the SA ADO.NET provider and the SA Visual Studio Integration Package. Some of these problems were

1. Incorrect machine.config file.

2. SA ADO.NET provider assemblies were not added to GAC.

3. SA ADO.NET provider assemblies did not show up in Visual Studio Add Reference dialogbox.

4. Visual Studio failed to create DataSets or Entity Framework Models using SA data sources.

Re-installation of SQL Anywhere was usually required to fix these problems. Now all Visual Studio integration related code has been implemented in SetupVSPackage.exe, and any Visual Studio integration problem should be fixed by running SetupVSPackage. It will perform the following tasks:

1. Add / Remove assemblies of SA ADO.NET provider and integration package to / from GAC.

2. Register or unregister SA ADO.NET provider in machine.config.

3. Create registry keys for SA integration package

4. Create registry keys for Visual Studio Add Reference dialogbox.

5. Copy / Remove SSDLToSA12.tt to / from Visual Studio 2010 folder (%VS_DIR%\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen).

6. Register or unregister SA ADO.NET provider in %SQL Server 2008 DIR%\100\DTS\ProviderDescriptors\ProviderDescriptors.xml which is used by SQL Server Integration Service.

7. Setup Visual Studio IDE for SA integration package.

SetupVSPackage.exe is executed by the SQL Anywhere installer when installing or uninstalling SQL Anywhere, but SetupVSPackage.exe can be run separately. Two versions of SetupVSPackage.exe will be installed:

1. %SQLANY%\Assembly\V4\SetupVSPackage.exe - This version is built using .NET Framework 4, this version should be used if .NET Framework 4 is installed.

2. %SQLANY%\Assembly\V2\SetupVSPackage.exe - This version is built using .NET Framework 2, this version should be used if .NET Framework 4 is not installed.

A performance issue when running SetupVSPackage.exe for Visual Studio 2008 and 2010 has also been fixed.

633610 The "Find/Replace" dialog could have failed to find text when the "Look in selection" box was checked. This was most likely to happen if the selection started far from the start of the text, and ended close to the end of the text. This has been fixed.
633633 When attempting to start the server on a machine with 256 or more processors, the server would have failed to start with assertion failure 109511: "Memory allocation size too large". This has been fixed. A workaround is to reduce the number of processors used by the server with the -gt or -gtc command line options.
633636 The messages pane height was not being set to the number of lines specify in the Options dialog. This has been fixed. At the same time, the components related to the Messages pane height are now disabled in the Options dialog until the "Show separate Message pane" box is checked, since the height is used only when this box is checked.
633643 The "Deploy Configuration File" window indicated that a Relay Server URL was to be entered, which was not correct. What was supposed to be entered was the URL suffix (everything after the host and port number). The label for the field has been changed to "Relay server URL suffix" and an example has been added under the field to illustrate typical values.

Also, the code which was supposed to populate the "Relay Server URL suffix" field with whatever value was used previously was incorrect, and has been fixed.

633685 Under rare situation, the Relay Server Outbound Enabler (RSOE) may have crashed during channel renewal. This has been fixed.
633740 Blobs and Clobs in temporary tables were not always being freed. This has been corrected, truncation of temporary tables will now free blobs within the freed rows.
633744 On Mac OS X systems, the name of a saved history file was given the extension "..sq", rather than ".sql", when an explicit file extension was not entered. This has been fixed.
633747 Unsetting the public option Oem_string would have caused the server to crash. This has been fixed.
633753 If an application deleted a row from a table with a unique index, then subsequently called an external environment procedure, and the external environment procedure then re-added the row using the server-side connection, the application would have received an assertion failure (200112) message on rollback. This problem has now been fixed.
633758 The MobiLink Replay utility (mlreplay) had an unnecessary stack size restriction that could have caused it to crash with a stack overflow error if large objects and arrays were placed on the stack when using the replay library. This stack size restriction has been removed.
633773 The method used for an internal database server timer on Linux to support request timing (-zt option,) and row access times in the graphical plan with statistics, was unreliable. This has been fixed.
633775 Exporting source control commands from the "Custom Source Control Options" window could have caused the Interactive SQL utility to crash on Mac OS X systems. This has been fixed.
633784 The "Tools" button on the "Connect" window, and any toolbar buttons in Sybase Central which have drop-down arrows, were drawn without the usual button border and background gradient on Linux and Solaris computers. This has now been fixed so that they have the correct background and border.
633795 Under rare circumstances, a query with a CONTAINS clause or predicate could have returned incorrect results when executed on a connection with snapshot isolation. For the problem to have occurred, the query would have had to have used an IMMEDIATE text index with a high volume of updates. This has been fixed.
633799 The "Find/Replace" window could have opened without any components if it was opened from a window used to view a stored procedure or view. The window typically contained only a grey or white rectangle. The problem happened only when opening a file in the editor window, or when clicking "File/New". This has now been fixed.
634029 Pressing Shift+F10 while a syntax-highlighting editor had focus should have opened its context menu, but did not happen consistently. This has now been fixed."
634032 The 'Find/Replace' toolbar button did not work in an editor window if the toolbar had been undocked. This has been fixed by preventing the toolbar from being undocked.

A workaround is to use the menu item or F3 key to open the 'Find/Replace' window.

634033 When loading shapes into a round-earth spatial reference system, certain valid shapes may have incorrectly generated the error "Invalid polygon: multiple exterior rings" (Error Code -1451) This would have occurred for polygons with holes (i.e., polygons defined by two or more rings), and was most likely to occur when the hole appeared near the edge of the exterior ring. There was a small possibility that the reported error could instead have been "Invalid polygon nesting" (Error Code -1450), "Invalid polygon: no exterior ring" (Error Code -1449), or that any of these errors could occur for a valid polygon (with or without holes) whose exterior ring crossed the equator. This has been fixed.
634055 When editing a stored procedure or view in a separate window, the "Undo" toolbar button was not enabled following a paste. This has been fixed.
634180 Selecting multiple columns in the Data tab for a table in an UltraLite database was not possible. This has been fixed.
634181 The amount of data in CHAR, NCHAR or BINARY variables could have exceeded the declared length of the variable when data was appended using the string concatenation operator (||). This has been fixed.
634184 The MobiLink agent for central administration of remotes could not be configured as a Windows service with dbsvc. This has been fixed.
634189 If a connection string was made up of parameters coming from the connection string and from the data source, and the UID and PWD/ENP parameters were not all in the connection string or all in the data source, the PWD/ENP parameters would have been ignored. For example, if DSN "foo" contained a UID but no PWD, then the connection string "DSN=foo;PWD=secret" would ignore the PWD field. This has been fixed.
634191 If an application made an external C environment call with a NULL argument, and the external C environment routine subsequently called get_value() to retrieve the NULL argument, then the environment would have incorrectly returned a status of 0 indicating failure to the external C environment routine, rather than returning a non-zero status. This problem has now been fixed.
634195 Synchronization model generated event scripts with errors or warnings could have included lines starting with #ERROR or #WARN, instead of having commented error or warning messages. This has been fixed.
634196 When editing data in a scrollable table, the first keystroke pressed in a cell whose value was "(NULL)" or "(DEFAULT)" was being inadvertently ignored. This has been fixed.
634198 When deploying a Synchronization Model with Java or .NET table scripts, the scripts would not have been added. Instead of having the SQL to define such scripts, the generated SQL file would have included an error message "Scripts of type 'x' not supported" where 'x' was Java or .NET. This has been fixed.
634289 Attempting to upgrade a database would on rare occasions have failed with a 'database in use' error, even though there was no other connection active on the database. This problem has now been fixed.
634293 The Interactive SQL utility could have crashed when sorting a large result set which returned tens of thousands of rows. This would have occurred in the following situation:

1. Click the column header to sort by that column

2. Click "Yes" when asked to fetch the remaining rows

3. Cancel fetching the rows

4. Click a different column header to sort by some other column

This has now been fixed.

634294 Due to a bug in some BlackBerry OS versions, an UltraLiteJ application may have failed to create a database on some simulators and devices. Typically, the result would have been an I/O or access control error. This condition may have occurred more frequently if UltraLiteJ was uninstalled and re-installed. This has been fixed.
634302 The Interactive SQL utility could have crashed when sorting a result set which returned tens of thousands of rows. This would have occurred in the following situation:

1. Click the column header to sort by that column

2. click "Yes" (or press Enter) when asked to fetch the remaining rows

3. Immediately press the F5 key.

The crash will occur once the entire result set had been read. This has now been fixed.

634313 If Ultralite for Mac OS X or IPhone attempted to synchronize through a proxy host while using HTTPS or TLS, the connection would not have been established, and the sync would have failed. This has been fixed
634324 The Timeout parameter of the system procedure xp_startsmtp() was being ignored. This has been corrected.
634327 The server may have hung while running the Validation utility (dbvalid), or the equivalent VALIDATE DATABASE statement. This was only possible if multiple connections were open to the database, at least one of which is doing DDL (such as an ALTER TABLE statement), and a checkpoint or connection attempt was made during the validate. This has now been fixed.

Note, it is recommended that the database server not be servicing other connections while database validation is taking place.

634330 Kerberos server principals needed to be of the form: server_name@REALM (for example myserver@SYBASE.COM). There was no way to specify a Kerberos server principal of the industry standard form: server_name/hostname@REALM (for example myserver/mymachine.sybase.com@SYBASE.COM). Now the Kerberos server principal can be specified with the server -kp option. The server principal specified by -kp must have been extracted to the Kerberos keytab file on the machine running the database server. Note that only one of -kp or -kr can be specified.

-kp dbengX/dbsrvX server option:

Specifies the Kerberos server principal and enable Kerberos authenticated connections to the database server.

Syntax:

-kp server-principal

Applies to:

all OSes except Windows Mobile

Remarks:

This option specifies the Kerberos server principal used by the database server. Normally, the principal used by the database server for Kerberos authentication is server-name@default-realm, where default-realm is the default realm configured for the Kerberos client. Use this option if you want to use a different server principal, such as the more standard format server-name/hostname@myrealm. If OpenClient or jConnect Kerberos authenticated connections are made to the server, the server principal must be specified by the application (see SERVICE_PRINCIPAL_NAME for jConnect).

The -kr option cannot be specified if the -kp option is specified.

Specifying this option enables Kerberos authentication to the database server.

See also:

<same list as -kr option documents, with the addition of the -kr option>

Example:

The following command starts a database server that accepts Kerberos logins and uses the principal myserver/mymachine.sybase.com@SYBASE.COM for authentication.

dbeng12 -kp myserver/mymachine.domain.com@MYREALM -n myserver C:\kerberos.db

634340 Synchronizations that worked fine on a BlackBerry Bold 9700 with OS 5.0.0.351, failed when the device was upgraded to 5.0.0.743. The application did not use BES or BIS communication, but tried Direct TCP, WAP 2.0 and WAP 1.x. When using BES or BIS communication, there was no issues with synchronization. This problem has been report to Research In Motion since it was discovered that calls to InputStream.read() had an additional 10 seconds overhead with OS 5.0.0.743 when using WAP 2.0 (and simillar delay with DirectTCP and WAP 1.x). UltraLiteJ has now been patch edto reduce the impact of this issue.

For the most reliable synchronization, a device should be paired with a BES (BlackBerry Enterprise Server) or the application should use BIS communication (application provider can join RIM partner program for free and then apply to use the BIS protocol).

634437 Selecting a database's Locks tab would have caused Sybase Central to crash if there were any ReadPK or WriteNoPK locks. This has been fixed.
634440 In the Table Editor, a primary key column could have been marked for deletion by selecting the column and pressing the Delete key, even though the Delete menu item and Delete toolbar button were disabled. In such cases, attempting to save the table could have caused Sybase Central to crash. This has been fixed so that now pressing the Delete key does nothing when one or more of the selected columns is in the primary key.
634445 As a side-effect of the changes made for Engineering case 627780, the Start Server in Background utility (dbspawn) on Windows no longer allowed the database server start line to be passed as a single quoted string. This behaviour has now been restored to its previous state on Windows only, and only for versions 10.0.1 and 11.0.1. Version 12 will retain

the new behaviour as per the documentation.

634453 When attempting to export a large number of metrics (typically in the range of 50+ metrics and/or 1 million+ points), the SQL Anywhere Monitor could have reported "Error #2038", or a java.lang.OutOfMemoryError. In an effort to prevent this, the SA Monitor now limits the amount of data that can be exported at one time. As of this fix, only a maximum of 25 metrics or 1 million points may be exported at once.
634489 The Interactive SQL utility (dbisql) would have required the exact case for identifiers to be used when connecting to a SQL Anywhere case-sensitive database. This was incorrect for SQL Anywhere, as case-sensitivity affects string comparisons not identifiers, and has now been corrected.

This general problem affected a number of other aspects of dbisql behavior, and have also been corected:

1. The "Lookup Table Name" window, the "Lookup Procedure Name" window, and the text completer made case-sensitive searches for matching object names if connected to a case-sensitive SQL Anwyhere database.

2. The INPUT USING statement would have failed if the table name in the FROM clause did not match the exact case of an existing table in the case-sensitive database from which data was being imported.

3. In the Query Editor, the list of available columns did not show any columns unless the table name matched the case of the database table name (affects: "Columns", "GROUP BY", and "ORDER BY" tabs; "Expression Editor" window). Also, the "Table pattern" field on the "Tables" tab was applied in a case-sensitive way.

634503 When completing the name of a column in a SELECT statement following the FROM clause, the completed text could have included the owner name for the table which contained the column, but not the table name. This was not valid SQL. Now, the owner name is not part of the inserted text.
634504 SQL Anywhere ODBC data sources were not listed in Visual Studio's Add Connection dialogbox on 64 bit Windows systems. This has now been fixed.
634532 Connections to a database using a large cache on Windows Mobile devices, could have failed with the error SQLE_DYNAMIC_MEMORY_EXHAUSTED. This has been fixed.
634556 For a Synchronization Model using server-initiated synchronization and a SQL Anywhere consolidated database, the generated publication_non_blocking_download_ack event script would have included a GO delimiter that caused an error when the script executed. This has been

fixed.

634559 Upgrading a version 10 Synchronization Model with server-initiated synchronization enabled would have lead to the ml_set_sis_sync_state stored procedure being called in two events, because the old end_publication script was not removed when the replacement publication_nonblocking_download_ack event script was generated. This has been fixed.
634612 When F5 was pressed, or View -> Refresh Folder was selected, while creating a new table in the Table Editor and No selected when prompted to save the table, then the prompt to save dialog would have been shown again. This has been fixed.
634664 The Microsoft SQL Server Reporting Services 2008 application uses the Linked Server mechanism to communicate via OLE DB to a SQL Anywhere server. It can send EXEC statements of the following form to the SQL Anywhere OLE DB provider:

EXEC owner.procedure_name :parm1, :parm2, ...

where :parm1, etc. are bound parameters.

The SQL Anywhere OLE DB provider has been improved to now handle this syntax.

634675 Sybase Central could have crashed when attempting to view the data of a table after dropping the table's primary key by some means other than Sybase Central (for example, via the Interactive SQL utility), and then refreshing the Sybase Central viewer via F5 or View -> Refresh. This has been fixed.
634724 With the option Blocking set to 'off', any attempts to modify a row that is locked by another user will result in an error message. Occasionally, this error message would have contained the string 'another user', instead of a valid user name. This has been fixed.
634728 If a simple statement had one of the following forms and a table hint was used in the FROM clause, it was possible for subsequent statements from the same connection with the same form, but with different hints, to use the hints from the earlier statement.

1) SELECT {table columns} FROM {table} WHERE {primary key col1 = val1, primary key col2 = val2, ... }

2) UPDATE {table} SET ... WHERE {primary key col1 = val1, primary key col2 = val2, ... }

3) DELETE FROM {table} SET ... WHERE {primary key col1 = val1, primary key col2 = val2, ... }

This has been fixed. As a work-around, the statements can be change to include "OPTIONS( FORCE OPTIMIZATION )", or the server can be started with the following command line switch: "-hW AllowSimpleUserCache".

634765 When an alert widget attempted to display a large number of alerts, it was possible that the web browser would have become unresponsive. This has been fixed.
634775 Execution of a CREATE TEXT INDEX <name> ON <table_name>(...) statement on a proxy table could have failed silently without giving an error. The creation of text indexes on proxy tables is not allowed, and the statement now gives the appropriate error.
634785 When applying an MSI install built using the deployment wizard, and specifying the target directory similar to the following:

msiexec /i sqlany11.msi SQLANYDIR="{path to install directory}\xxx xxxxxxxx xx"

the install could have failed. This has been fixed.

634791 Sybase Central could have displayed a server twice in the tree. This could eventually have caused a crash when disconnecting from a database running on the server. This has been fixed.
634883 Connections which had communication compression enabled could have been dropped, resulting in the "Connection was terminated" error. This was more likely to occur if the connection had both communication compression and simple encryption enabled. If the server -z log and the client LOGFILE log was used, the message "Failed to decompress a compressed packet" would have appearred in one or both of the logs when this problem occurred. This has been fixed.
634894 When modifying a character column value after selecting "Edit in Window" from the "...' menu, if there was a database error with the value, the value could have been corrected with a new value, but the old value was resent by mistake. This has been fixed.
634898 The wrong year could have been selected after clicking the "Calendar" button in a task's property sheet, or in the "Delete Agent Events" window. The problem occurred only if a date in a year other than the current one was selected. This has been fixed.
634900 The server may have become deadlocked while acquiring shared latches. This has now been corrected.
634906 Setting the "Show results from each statement" option would have resulted in incorrect behavior: Attempts to sort, select all, or copy column data would have resulted in an attempt to fetch more rows if required. That attempt should not have been made. When "Show results for each statement" is On, only the rows already fetched can be sorted. This has been corrected.
634908 In the Developer Edition, the SQL Anywhere Monitor required a reboot for System Tray - > Browse Data to work. This has been fixed.
634919 The utility SetupVSPackage.exe did not modify the Global Assembly Cache (GAC) or the machine.config file if Visual Studio was not installed. This problem has been fixed.
634921 When a ping synchronization took place, the MobiLink server needed to check the status of the connection to the consolidated database, and would have done so by executing a query to count the number of rows in the ml_scripts_modified table, but MobiLink would not have committed or rolled back this query when the ping synchronization was complete, leaving the transaction open. If the consolidated database used snapshot isolation, this open transaction would have resulted in the MobiLink server sending an older last modified timestamp than was necessary to remote databases until this transaction was closed, which would not happen until another non-ping synchronization re-used the same connection in the connection pool. While this did not result in any data loss, it could result in the same rows being downloaded to the remote databases multiple times. The MobiLink server no longer leaves this transaction open after a ping synchronization.
634933 Deploying a Synchronization Model with the "Run this wizard initialized with last deployment settings" option would have given an empty field for the location of the UltraLite database file, instead of using the location from the last deployment. A workaround is to use the Browse button to pick the previously deployed UDB file. This has been fixed.
634934 If a computer was configured to display numbers with a thousands separator, and a NUMERIC, REAL, FLOAT, or DECIMAL value that contained a thousands separator was edited, the editor would have started empty and the bell would ring. Now the thousands separator is stripped out, and the resulting string is used as the initial editor value.
634938 The Task Wizard would have crashed if the "This task requires or creates a remote database" checkbox was checked, but no Remote Schema Names had been added to the project. The crash happened when the "Finish" button was clicked. This has been fixed.
635035 While very rare, it was possible for the Server Enumeration utility (dblocate) to hang. This has been fixed.
635062 The Relay Server Outbound Enabler (RSOE) could have failed to connect to an Apache Relay Server, with the error message "HTTP chunk length too long". The same RSOE would not have reproduced this error with a Microsoft IIS webserver. This has been fixed.
635066 When Snapshot isolation was enabled, deleted rows might not have been physically removed in some cases. This has been corrected.
635072 Specifying a single, empty authentication parameter on the dbmlsync commandline, or using a synchronization profile, would have caused dbmlsync to report "out of memory". For example specifying the following on the commandline would have caused the error:

-ap ""

This problem has been fixed.

Note, a workaround is to specify the parameter using a single comma. For example -ap , This passes a single empty authentication parameter but does not cause the "out of memory" error.

635078 If the preferred language was "Simplified Chinese", the date picker would not have displayed the month names when attempting to set a date range on the Export Metrics dialog. This has been fixed.
635085 Attempting to create or interact with a database on an attached Windows CE device using the desktop tools (i.e. Sybase Central or command line utilities), using a WCE:\... database filename, would have fail. The WCE:\... paths have now been special cased when qualifying filenames.
635120 In exceptionally rare conditions, the server may have crashed while reading a row of a table that had a very large number of columns. This has now been fixed.
635166 If a user had a Resource List Widget that was sorted based on resource status, and a resource updated its status, the widget would not have been re-sort. This has been fixed.
635167 Database connections acquired from the HTTP connection pool may have incorrectly referenced Global Temporary tables. Typically, a procedure that inserted data would have failed with a (SQLCODE -207) "Wrong number of values for INSERT" on subsequent HTTP requests. This has been fixed. A work-around is to disable HTTP connection pooling with the following database option: set option Public.http_connection_pool_basesize=0.
635168 If a read-only user logged in to the SQL Anywhere Monitor and attempted to close a SQL Anywhere connection using the Connection Widget, it would have failed silently. This has been fixed. Read-only users can now successfully close connections.
635175 When there was a design problem in the Notifier property (e.g. user defined a request_cursor referencing an unknown column), the Notifier would have reported the SQLException on MobiLink server startup, but the error report did not contain enough context information to pinpoint the issue efficiently. The Notifier would also have produced repeated NullPointerException in the MobiLink log after it failed to start. This has been fixed to add context information in addition to the SQLException and stop the Notifier from running if it has encountered a design problem.

The following is an example output after the fix.

<Main> [-10133] java.lang.Exception: Notifier(Simple).request_cursor: Failed to prepare request cursor

<Main> [-10133] at ianywhere.ml.notifier.Notifier.connectDB(Notifier.java:390)

<Main> [-10133] at ianywhere.ml.notifier.Scheduler.connectDB(Scheduler.java:360)

<Main> [-10133] at ianywhere.ml.notifier.Scheduler.run(Scheduler.java:428)

<Main> [-10133] at java.lang.Thread.run(Thread.java:619)

<Main> [-10133] Caused by: java.sql.SQLException: [Sybase][ODBC Driver][SQL Anywhere]Column 'bogus_content' not found

<Main> [-10133] at ianywhere.ml.jdbcodbc.IConnection.nativePrepareStatement(Native Method)

<Main> [-10133] at ianywhere.ml.jdbcodbc.IConnection.prepareStatement(IConnection.java:554)

<Main> [-10133] at ianywhere.ml.notifier.Notifier.connectDB(Notifier.java:388)

<Main> [-10133] ... 3 more

<Main> <SISI><Scheduler(0:1)>: Shutdown

<Main> <SISI><Scheduler(0:1)>: Disconnected from database

635300 The text displayed by an evaluation version of the MobiLink server was truncated. This has been fixed.
635322 The cleaner may not have completely cleaned pages in some situations. This has now been fixed.
635336 The MobiLink Server Log File Viewer would have shown empty user names and remote IDs in its "Synchronizations" and "Details" panels when running on a non-English Solaris, Mac OS X, or French Linux system, and Sybase Central was set up to run in that non-English language. This has been fixed.
635353 The server could have hung when a connection disconnected, or was dropped. This was more likely to have occurred if the server was under heavy load. This has been fixed.
635356 The server could have crashed under certain specific circumstances when executing the DROP STATISTICS statement. This problem has been resolved.
635357 A deleted row with a blob column could have been created with an invalid format when using the MobiLink Replay utility's replay API if the code generated by mlgenreplayapi was modified so that the blob value can be passed to the Delete method of the MLReplayUploadTable_<table name> class. The result of trying to synchronize this deleted row would have been a failed synchronization. This has been fixed.
635419 Attempting to retrieve the uid_has_hyphens option setting through the SNMP interface would always have returned NULL. This has been fixed.
635433 Attempting to change the type of an existing command would have put the "Commands" panel in Sybase Central in a state where it was not possible to modify the command unless some other item was selected in the "Folders" pane, then the remote task again was selected again. Other symptoms included the drop-down list for the "Command type" flashing briefly before disappearing. This has now been fixed.
635442 The MobiLink Agent for central administration of remotes could have failed to upload its log file if the file upload command used the variable 'agent_log' for the filename. The failure would have occurred if the full filepath of the log file was long (more than 100 bytes). This has been fixed.
635443 When not connected to a database in the SQL Anywhere Console utility (dbconsole), the "File/Options" menu is disabled. The "Options" context menus for the "Connections", "Properties", and "Messages" panels were not disabled. This has been corrected so that now they are disabled.
635466 When making a TCP connection to a remote machine that was unavailable (i.e. powered off, network cable unplugged, etc.), the time taken to time out could have been far longer than the value of the TIMEOUT parameter. This has been fixed.
635468 On Mac OS X systems only, the names of favorites in the Favorites sidebar would have disappeared when the mouse was moved over them. This has been fixed.
635618 When converting a string to a time using the CONVERT function and an explicit format-style, SQL Anywhere 10.0 and above could have rejected conversions permitted by earlier versions.

For example, the following statement is accepted by version 9.0, but rejected by version 10.0 and above:

select convert( time, '11:45am', 14 ) tm_conv

The behavour of converting from strings to TIME changed from version 9.0 of SQL Anywhere to version 10.0 and later, with version 10.0 and later applying the same rules that conversions from string to timestamp used. The string '11:45am' does not precisely match the format style 14 (hh:nn:ss:sss) because it contains an "am" indicator that is not present in the style.

Parsing of formatted time strings has been enhanced so that the time portion of a string is accepted provided that it matches the format [hh:nn:ss.ssssssAA]. The time string must specify the hour digits, but all other time parts are optional. The AM/PM indicator is always accepted whether or not time parts are omitted. Note that this now permits up to six digits to represent microseconds after the seconds. This change affects the conversion of string to TIME and also to TIMESTAMP, so there is a consistent parsing. The following is rejected after this change, even though it was accepted in 9.0:

select convert( time, '1991-02-03 11:45', 101 )

The string does not match the style format 101 (mm/dd/yyyy).

Further, in some cases it was possible to generate invalid timestamps with string conversions. This has also been fixed.

635629 If the Platform field on the Overview page had a long name, the horizontal splitbar could not be moved to view it. This has been fixed.
635652 When working with the Recommendations panel within Profiling, its suggestions may sometimes have contained a very long line, which it would have shown in the text area without any line wrapping. This meant that scrolling from left to right was required to view its contains. This has been fixed.
635655 If -xs was used to start the HTTP or HTTPS server on a Windows machine with IPv6 enabled, and the port number to be used was already in use by an IPv4-only application, the server would have reported a bind error ("Could not bind to address 0.0.0.0:80") but would have started anyway. This has been fixed - the server will refuse to start in this situation.
635660 When choosing columns to add to a delete shadow table in the Download Delete Subset tab for a table mapping, the expression for which the columns were required was not shown when the download delete subset option was "Same" and the download subset option was "Custom". Changing to the Download Subset tab was required to see the expression. This has been fixed. Now the custom download subset table list and SQL expression are displayed as

read-only in the Download Delete Subset tab when the download delete subset option is "Same" and the download subset option is "Custom".

635800 The error, SQLE_TOO_MANY_CURSORS, would have been reported when there were more than 32 prepared statements for a cursor, each of which had a parameter set. The limit should have been 64 prepared statements. This was corrected.
635803 Diagnostic tracing databases, or databases created by the automatic Application Profiling Wizard, would have failed to start if the original database had auditing enabled. This has been fixed.

A workaround is to temporarily disable auditing on the main database, create the tracing database, and then re-enable it.

635809 The server's memory usage could have been more than expected. Some memory allocations that could have been from the server's cache, came from the heap instead. This has been fixed.
635815 If Java or other external environment objects were installed in a database, and the database failed to shut down cleanly before the next checkpoint, then it was likely that the Java or external environment objects would have needed to be re-installed. This problem has now been fixed.
635956 A query with a CUBE, ROLLUP, or GROUPING SETS clause and HAVING predicates may have returned an incorrect result set. The query must not have had any aggregate functions, and the grouping sets must have contained the grand total which should have been filtered by the HAVING predicates, but instead it was returned as a valid row.

For example:

select n_comment from nation group by cube (n_comment) HAVING n_comment like 'alw%';

The result set would have contained all the rows with n_comment for which the predicate "n_comment LIKE 'alw%' is TRUE, but also the row "(NULL)". This has now been fixed.

635960 Attempting to using Integrated Login, or Kerberos, with the NodeType connection parameter could have failed. This has been fixed.
635961 Attempting to connect using Integrated Login to a mirror server, or copy node, would have failed with the error "Integrated login failed". This has been fixed.
635977 The MobiLink server could have hung if it was shutdown after the consolidated server was shutdown or the consolidated server had crashed. This has been fixed.
635991 Attempting to unload and reload a 12.0.0 database which was configured for mirroring or read-only scale-out, could have resulted in a syntax error during reload. The syntax error would have occurred on a SET MIRROR OPTION or ALTER MIRROR SERVER statement. This has been fixed.

As a work around, the reload.sql file can be edited to double the embedded quotes and escape other characters requiring escaping in these statements.

636018 Queries involving indexes containing long values could have returned incorrect results. Index corruption was possible, but not likely. This problem has now been fixed.
636082 UltraLite should generate an error if a column in a primary key was dropped, but this situation was not being properly diagnosed. This has now been corrected.
636289 Under rare circumstances, the server could have hung when synchronizing (or rarely, fetching) large blobs or spatial data. This has been fixed.

A partial workaround is to decrease the frequency of checkpoints; the hang is most likely to occur during a checkpoint. Of course, decreasing the checkpoint frequency will increase recovery time.

636304 Opening the Domain, Web Service or Spatial Reference System property dialogs could have caused the Sybase Central to crash. This has been fixed.
636305 When the transaction log contained many entries, sorting of the audit table could have been very slow. This has been fixed by no longer allowing the audit table to be sortable.
636307 A simple UPDATE statement that affected a large number of rows could have consumed memory proportional to the number of rows if the statement used one of the following features:

- results from a user-defined function with numeric Expression Caching (any data type)

- a LIKE predicate

- a CAST of a string to an approximate number (REAL, DOUBLE, or FLOAT)

- the SORTKEY or COMPARE builtin function

- the REMAINDER or MOD builtin functions with arguments of type NUMERIC or DECIMAL

- the MEDIAN aggregate function

- a spatial data type

If the memory usage exceeded what was allowed for one connection, the statement would have failed with a dynamic memory exhausted error. This has been fixed.

636310 In the "Connect" window, "Tools/Save as ODBC Data Source" can be clicked to save the contents of the window as a DSN. That window was not closing when the Esc key was pressed. This has been fixed so that now it does.
636312 Selecting 'Undo' or 'Redo' (or typing Ctrl-Z or Ctrl-Y) while viewing a spatial reference system's Definition tab, a system trigger's SQL tab, a Java class's Description tab, or an external environment object's Contents tab, would either have caused Sybase Central to crash or hang, when selecting another object in the tree. This has been fixed.
636315 A database could have been corrupted when run with Lazy Loading and a prepared query, which required a temporary table, was reused. This has been corrected
636316 If an application connected to a database that had either been initialized or upgraded with version 12 software, and subsequently made several external environment calls, then in very rare cases, the application might have received an empty result from the external environment and the error:

Permission denied: you do not have permission to execute the procedure "sajvm_JavaWorker"

would have been reported in the server console. This problem has now been fixed.

636421 Tested and reproduced with Interactive SQL 11.0.1 2430 from PC Client 15.5

Interactive SQL reaches 100% CPU when larger sql files are opened and scrolled. Depending on the machine processor (Pentium IV or older Pentium D), the performance gets very bad, or, according to customer's test, DBISQL can even hang.

636422 The Interactive SQL utilirt can show results as a scrolling table, or as plain text. Changing this option using the "Show Results as" items in the "Data" menu, could have resulted in the option changing unexpectedly when disconnecting and reconnecting. The problem was that the option was not being saved consistently when it was changed. This has been fixed.
636438 The exception "ianywhere.ultralitej.implementation.JrException: UltraLiteJ Error[-280]: Publication 'ul_no_pub' not found" may have been reported for Connection.resetLastDownloadTime(Connection.SYNC_ALL_DB_PUB_NAME). A workaround would be to call Connection.getLastDownloadTime(Connection.SYNC_ALL_DB_PUB_NAME).getTime() prior to the call to resetLastDownloadTime(). This has been fixed.
636442 If a server in a read-only scale-out system redirected a connection to another server due to the NodeType connection parameter, the internal count for the number of client connections could have been incorrect. This could have caused the server to:

- incorrectly prompt that there were active connections when shutting down the server

- incorrectly determine if an unconditional dbstop or STOP SERVER was required

- incorrectly enforce the -gm connection limit

This has been fixed.

636508 Attempting to use an unnamed multi-column unique constraint as an index hint in the FROM clause, would have caused the error "Cannot find index named". This has been fixed.
636520 Indexes may have become corrupt when performing delete operations. The corruption was more likely to occur on multi-column indexes when the data in the index consisted of disjoint sets of highly clustered data, and may manifest itself by causing assertions such as 106200, 106201, 106216, 106217, or as errors from dbvalid. This has now been fixed, Rebuilding the affected indexes using a server with this fix, by executing the "ALTER INDEX REBUILD" statement, should be done when experiencing indexing related problems.
636535 When building a text index using an external prefilter or term breaker, the server

could have recorded the length of the document before prefiltering as the final length. This could have caused the scores reported by the CONTAINS queries to differ (in most cases be lower) than expected. The problem did not affect the text indexes built using no external libraries.

For example: If the following two values (documents)

'<html><body>A <b>very</b> nice day...</body></html>'

'<html><body>Peace and quiet at home</body></html>'

were indexed using a tag-removing prefilter, the lengths of the actual text were not equal, but the lengths recorded by the index would have included the lengths of the tags, making the document lengths equal. This has now been fixed.

636544 There is a tool in the "Connect" window which creates an ODBC DSN from the contents of the window. If a DSN had been selected in the window, its contents were not included in the newly created DSN which usually made the new DSN useless. Now, the new DSN contains the parameters of the selected DSN.
636549 The file in which custom source control settings were saved was incorrectly named ".sybSourceControl999". It is now called ".sybSourceControl610", and has been moved into the same directory as the other configuration files for the Interactive SQL utility. If a custom source control system has already been configured, it will have to be reconfigured after this change.
636555 Editing NCHAR, NVARCHAR, or LONGNVARCHAR values would have resulted in an error message of the form "The row could not be inserted. Column ... not found". This has been fixed.

Note, this problem would also have affected the "Data" tabs in Sybase Central.

636557 Attempting to delete properties and transmission rules from the clients defined within a Server Message Store, could have failed either with or without an error message. This has been fixed.
636558 All of the items in the "File" menu (and others) would have been disabled after clicking a source control-related menu item, if that source control action failed. This would have occurred when using the "custom" source control option. This has been fixed.
636565 The TCP/IP protocol option table on the "Network" tab of the "Connect" dialog could have become disabled under some circumstances. The table was being disabled only if a parameter was entered on the "Network" or "Advanced Options" tabs, the tabs were hidden by clicking the "Advanced" button, then clicking "Connect" or "Tools/Test Connection" and declining to use the hidden connection parameters. This has been fixed, now the table is never disabled.
636568 The QAManagerBase.close method could have hung when using a SQL Anywhere database as a message bus (ie. the message store is initialized with qaagent -sil). This has been fixed.
636572 If an application executed a remote query, and the query involved an IF or CASE expression in the select list, then the query would always have been processed in partial or no passthru mode, even if there was only one remote server involved. This restriction has now been relaxed such that remote queries containing IF or CASE expressions in the select list will now be executed in full passthru whenever possible, but only if the remote server is another SA server.
636651 The use of START AT or FIRST in a subquery may have resulted in incorrect results. This was corrected.
636654 The Validation utility, or a VALIDATE INDEX statement, may have failed spuriously when run on indexes with 33 to 64 columns, if any columns beyond the 32nd were sorted in ascending order. This has been fixed.
636655 The server may have crashed when defining foreign keys that auto-created columns in the referencing table. This has been fixed.
636660 SQL Anywhere web server required that the last boundary of a multi-part/formdata HTTP request be terminated with a carriage-return line-feed. This restriction has now been relaxed, the server will now accept the last boundary as valid even if it is not terminated with a CR/LF.
636664 When connected to a 10.x or 11.x database running on a 12.x server, selecting the Procedures & Functions folder in the tree would have caused Sybase Central to crash if objects owned by the user dbo were not being filtered out. This has been fixed.
636694 The Host parameter (hostname:port) was not being written, or updated, in the registry entry for a DSN created using the ODBC administrator and the "Start and connect to a database running on another computer" option on the Login tab. This has now been corrected.
636715 The iAS ODBC driver for Oracle would have returned a wrong value for a parameter indicator through the ODBC API, SQLBindparameter( ..., c_type, ..., param_type, ..., &indicator ), if it was called with the following parameters:

1) the C data type of the parameter was SQL_C_WCHAR or SQL_C_CHAR

2) the type of parameter was SQL_PARAM_INPUT_OUTPUT, but the corresponding parameter used in the SQL statement was input-only

Due to this problem, the data for the user-defined named parameters in the MobiLink server may have been truncated after each use when the named parameter was defined as {ml u.varname} and the parameter used in the SQL statement was input-only. This has now been fixed.

636767 In exceptionally rare conditions, the server may have crashed when expanding a very large view definition that contained a UNION, INTERSECT, or EXCEPT query node and the available cache was too small. This has been fixed. The server will now return a SQLSTATE_SYNTACTIC_LIMIT error in these cases.
636770 If the database option Chained was set to OFF, upgrading the database would have failed with the error: "COMMIT/ROLLBACK not allowed within atomic operation". This has been fixed by temporarily setting the option to ON within the upgrade script when needed.
636780 If a NO MINVALUE clause was explicitly specified in a CREATE SEQUENCE or ALTER SEQUENCE statement, the minvalue for the sequence would have been set at zero, instead of the documented default, 1. If a NO MAXVALUE clause was explicitly specified, the maxvalue would have been set to zero, instead of the default, 2^63-1. In both cases, the problem can be worked around by simply removing the NO MINVALUE or NO MAXVALUE clause if the default values are desired. This has now been corrected.
636801 Unloading a version 9 database with a table with named primary key constraint could have failed if the primary key was referenced by an index hint in a view. This has been fixed.

Also, unloading a version 10 or later database containing a table with a primary key index that had been renamed would have failed to preserve the new name for the index. This has been fixed.

636807 The MobiLink Agent for central administration of remotes could have allowed a regular task to run concurrently with a high priority task. This was incorrect, since a high priority task is supposed to run when no other tasks are running and exclude other tasks from starting while it is present on the agent. The incorrect behavior would only have occurred if at least two regular tasks were running concurrently, and then a high priority task was deployed to the agent. This has been fixed.
637026 Characters from a charset other than the one the computer usually operates in could have been displayed as boxes in the text above the tabs in the right pane. This has been fixed.
637036 In the ODBC Administrator's datasource configuration dialog, the encryption field should have been treated like a password field, displaying it as a collection of asterisks, but instead it was being displayed in plain text. This has been fixed.
637037 When a stored procedure was invoked through the Microsoft SQL Server Linked Server mechanism using an "EXEC" statement and specifying parameters, the call would have failed with a syntax error. The following is an example of a SQL Server query that is forwarded to a SQL Anywhere server:

SELECT * FROM openquery(SALINK, 'exec test_proc 1')

This problem has been fixed. When parameters are present in the SQL query, the statement is passed unchanged to the server. When no parameters are present, the OLE DB provider rewrites the "exec" statement using CALL and appends parameter marker place holders (in order to support ADO's ADODB.CommandTypeEnum.adCmdStoredProc).

637047 The minimum width for the Plan Viewer window could have been less than 1024 pixels, and thus not completely visible on smaller monitors. This has been fixed.
637049 In certain rare cases, the Connection List widget could have failed to populate. A race condition between the request for connection information and the establishment of a connection has been corrected.
637057 If the network connection between a primary server and a mirror server was temporarily broken, the primary server could have stopped sending updates to the mirror server. This has been fixed.
637063 During a soft shutdown, the MobiLink server did not stop accepting new requests. This has been fixed. Now, when a new request connects during shutdown, the server will abort the request and print a new error, -13074: "Aborting request that started during shutdown".
637125 If an application executed a remote query that required the server to make a remote connection to another SA database, then there was a very rare chance that the server would have incorrectly failed the remote connection with the error: "unable to connect, server definition is circular". This problem has now been fixed.
637146 Two xml mapping files have been added to support SQL Server 2008 Integration Services:

- MSSqlToSA.xml --- mapping SQL Server 2008 data types to SA data types.

- SAToMSSql10.xml --- mapping SA data types to SQL Server 2008 data types.

These files will be installed to "%SA%\Assembly\V2" folders. The utility SetupVSPackage.exe will copy them to, or remove them from, the "%SQL Server 2008 Dir%\DTS\Binn" folder.

637165 The following defects related to the menu bar, which occurred only on Mac OS X systems, have now been fixed:

- The "Check for Software Updates" menu item was missing

- The text for submenus were indented more than was required

- There were a number of spurious separators at the end of certain menus.

637169 Starting with Visual Studio 2010, class libraries built with with the default project settings will no longer work with a MobiLink server running with its default CLR version.  There are two workarounds for this:

1) Change the target Framework of the VS project.

When creating a new project, there is a drop down above the list of project types that contains ".NET Framework 4"; change this to ".NET Framework 2.0", ".NET Framework 3.0", or ".NET Framework 3.5".  If a version 4 project has already been created, change the target framework by right-clicking on the project in the Solution Explorer, and selecting "Properties" in the context menu.  The target framework can be set on the "Application" tab.燱hen changing the target framework, there is no longer access to .NET 4.0 features; to use newer features, use the next workaround.

2) Tell the MobiLink server to load the version 4 framework.

To do this, add -clrVersion=v4.0.30319 to the -sl dnet options.  The "30319" is the specific build number of the framework installed and may be different on your machine.  To find the correct version, look in the .NET install location, which is typically "c:\WINDOWS\Microsoft.NET\Framework\".  The clrVersion to specify is the v4.0 sub-directory there.

637174 If a file was inserted using the "Edit/Insert File" menu item, the file would have been locked by dbisql until dbisql was closed. If the Fast Launcher option was turned on, the file was locked until the Fast Launcher also shut down (which by default happens after 30 minutes of inactivity). Now, the file is unlocked as soon as its text has been added to the "SQL Statements" field.
637200 If a user with DBA authority granted usage permissions on a sequence not owned by it to another user, that user with DBA authority could not have been dropped unless the permissions were also revoked; a foreign key violation error would have been reported. By contrast, permissions on other database objects granted by a user who is about to be dropped are revoked automatically. This has been fixed so that the necessary sequence permissions are also revoked automatically.

A workaround is to manually revoke any sequence permissions granted by the user about to be dropped, then re-grant them from a user that will not be dropped. The original grantor can then be dropped.

637203 The column alignment used by the OUTPUT statement for the FIXED file format was often inappropriate for the data type. In general, numbers should be right-aligned, while everything else is left-aligned. This has been fixed.
637290 On a machine with IPv6 enabled but not configured, the function property('TcpipAddresses') would have returned "(::):2638" as one of the addresses. This is the IPv6 INADDR_ANY address, and it is not useful to clients for making connections. If HTTP or HTTPS was in use, the functions property('HttpAddresess') and property('HttpsAddresses') would have had the same problem. This has been fixed so that now this address will no longer be listed.
637309 The MobiLink server could have crashed at the end of a version 9 or earlier synchronization request, or while processing the upload stream from a version 10 or later synchronization request.

Also, the MobiLink server was not able to distinguish between empty strings in varchar(8) or smaller columns, binary(16) or smaller values made of only 0s, the integer 0, and null values when filtering the download. This could have caused rows to be incorrectly filtered from the download. For example, if an empty string was uploaded in a row, and the only difference between a downloaded row and that uploaded row was that the empty string became null, the row would have been ommitted from the download and the remote would not have received that update.

These issues have been fixed.

637313 When copying a number from a result set to the clipboard, the thousands separator was included in the copied number. This has been corrected so that the separator is removed.
637326 An error could have occurred when deploying a Synchronization Model for an ASE consolidated database when a synchronized table had a MONEY or SMALLMONEY column and conflict resolution was enabled for the table mapping. ASE would have reported the error "Can't specify a length or scale on type 'money'" when deployment tried to create a temporary table for conflict resolution, and incorrectly specified the length and scale for MONEY columns. This would also have occurred for a Microsoft SQL Server consolidated database with a synchronized table having a MONEY or SMALLMONEY column, and for an IBM DB2 consolidated database with a synchronized table having a LONG VARCHAR column. These problems have been fixed. Now the generated SQL does not specify length or scale for MONEY or SMALLMONEY columns with ASE and Microsoft SQL Server, or for LONG VARCHAR with IBM DB2.
637333 When using the ADO.NET Provider with a .NET Framework 4.0 Client Profile, Visual Studio 2010 generated some compile errors. This problem has been fixed.
637336 Dropping a text index used within a view could have caused the assertion failure message: "Unable to delete row from SYSTABLE". This could have happen when the view definition contained a CONTAINS predicated that could have be satisfied by the text index. This has been fixed. A workaround is to drop the view, then drop the text index.
637340 If a Unix server was started with a server name longer than 32 bytes, shared memory connections to it may have been dropped. This has been fixed.
637445 The splash screens for the SQL Anywhere Console utility (dbconsole), the MobiLink Monitor, and the SQL Anywhere Monitor contained program names that were always in English. These mane have now been localized.
637446 Exporting TIME values to a DB2 database with an OUTPUT USING statement in the Interactive SQL utility would have failed. This has been fixed.
637447 The ALT left cursor and ALT right cursor keys on Solaris systems control the desktop and cannot be used to view executed SQL statements. The get around this limitation, the keys used now for viewing previous and next SQL statements on Solaris systems are the keys CTRL-up cursor and CTRL-down cursor respectively.
637453 With the changes for Engineering case 576252, support for SQL Anywhere Explorer and SQL Anywhere Toolbar was disabled for Visual Studio version 2010. Now, SQL Anywhere Explorer and SQL Anywhere Toolbar have been disabled for Visual Studio versions 2005 and 2008 as well.
637456 Attempting to import NCHAR types from ASE using the INPUT statement or the Import Wizard, would have failed with the message "Cannot convert '' to a varbit". This has been fixed.
637464 As of version 10.0, the database server started accepting a number of new values for the request level logging option, SQL, PLAN, HOSTVARS, etc. The Console utility though still only allowed the older YES and NO values. This has now been corrected so that the Console utility now accepts these new values. These new options appear on the "Console" page in the "Options" dialog.

Note that the logging options are presented as if they are separate, independent options, even though there are underlying dependencies between some of the them. For example, logging triggers also logs procedures and SQL. This is a server behavior rather than a Console utility behavior.

637476 Importing data from a database that was not a SQL Anywhere or UltraLite database into an UltraLite database, using the Interactive SQL INPUT statement or the Import Wizard, could have failed. This would have occurred if a new table was to be created for the imported data and the data contained one or more INTEGER columns. This has been fixed.
637481 UltraLite client message stores created from Sybase Central did not have their store IDs set, even if a store ID was given in the Client Message Store wizard. Lack of the store ID would have caused a warning message to be displayed when attempting to disconnect from the database and stop the agent from Sybase Central. This has been fixed.
637487 In very rare cases, the MobiLink server would have generated the error: 'Function sequence error' and aborted the synchronization request, when an upload stream contained spatial data. This problem has now been fixed.
637505 Opening the property sheet for an article that referenced a subset of a table's columns and clicking the Cancel button to close it, would have caused the subset of columns to not have been displayed the next time the property sheet was opened. Pressing F5, or selecting View -> Refresh in the main Sybase Central window, was required to get the property sheet to correctly display the set of columns in the article. This has been fixed.
637620 In rare circumstances, the server could have crashed while handling multiple TLS connections. This has been fixed.
637621 If an application executed an INSERT statement that contained multiple VALUES lists, and the insert statement involved a remote table, then the server would have failed the INSERT with a "remote server not capable" error. The server will now push the multiple VALUES lists to the remote server, provided the remote server is another SA server and the INSERT statement can be processed in full passthru mode. It should be noted that if the remote SA server is an older version which does not support inserts with multiple values lists, then the remote SA will return a syntax error.
637725 The Available objects list would have been empty when creating SQL Server Integration Services data source view. This problem has been fixed.
637743 Calls to SQLGetTypeInfo() would have returned the wrong UNSIGNED_ATTRIBUTE column value for TINYINT. The TINYINT datatype is an unsigned type so the column should have contained a 1 rather than a 0. This problem has been fixed so that the UNSIGNED_ATTRIBUTE column result now agrees with the result returned by SQLColAttribute(SQL_DESC_UNSIGNED) for a TINYINT column.
637744 Options set on the Advanced page of the ODBC administrator could not have been deleted. Options could have been changed, but to delete them it was necessary to recreate the ODBC datasource, or remove the options manually from the registry. This has now been fixed.
637745 If an application executed a remote statement, and the remote statement required the server to execute the statement in either partial or no passthrough mode, then there was a chance the server would have crashed when the statement was overly complex, or if the server cache was exhausted. This problem has now been fixed by reporting an error in this situation.
637769 As part of the fix for Engineering case 632873, a problem was introduced where, under rare circumstances, an IMMEDIATE text index could have become corrupt. The corruption may manifest itself by preventing some documents from being found by matching queries. This has been fixed, but it is recommended that IMMEDIATE text indexes that are under heavy contention be recreated following applying this fix.
637861 When migrating data from a previous SQL Anywhere Monitor install while applying an EBF on Linux systems, it was possible that errors arising during the migration process would not have been reported. This has been fixed.
637874 When computing the VARIANCE, VAR_SAMP, VAR_POP, STDDEV, STDDEV_SAMP, or STDDEV_POP functions, the server could have incorrectly returned a negative value or NULL. This could have happened if the data was in a non-exact numeric column (that is, of type DOUBLE or FLOAT) and there was extremely little actual variance across the values. It most likely could only have happened when all the values were exactly the same. This has now been fixed.

A workaround is to adjust the value over which the variance function is computed so that a tiny amount of variance is introduced. For example, instead of:

SELECT VARIANCE(mycolumn) FROM mytable

use:

SELECT VARIANCE(mycolumn + 0.00000001*myprimarykey) FROM mytable

637877 When completing column names for tables that have aliases, the alias is now displayed in the completion list, and the alias is now used in the completed text. For example, if the completer is opened after "Comp" in the following statement:

select Comp from customers C1, customers C2

the completer will include "Company (C1 - customers)" and "Company (C2 - customers)". If the second item is selected, the completed text will read:

select C2.CompanyName from customers C1, customers C2

Previously, "Comp" would be replaced by "CompanyName", which was ambiguous.

637881 When executing a remote query that required partial or no passthru processing, and the query made heavy usage of aliases, then the server could have incorrectly returned error "-890 statement size or complexity exceeds server limits". This problem has now been fixed and the -890 error will now only be returned if the statement size or complexity really does exceed server limits.
637897 On SUSE 10 systems, the server could have failed to start a database if the database file was mounted on an NFS share. The error given would be something like:

"Error: Database cannot be started -- /mnt/share/demo.db is not a database"

This has now been fixed.

637901 The Interactive SQL utility (dbisql) could have failed to connect to an UltraLite database specified on the command line (with -c) under the following conditions:

- the UltraLite engine (uleng12) was started from one directory and dbisql was launched from another

- the -c option to dbisqlL specified a relative path

The result would have been that dbisql would have displayed the connection dialog, when it should have immediately connected to the database. This has been fixed.

637909 Executing a stored procedure and fetching the result set would have thrown the exception "Index was outside the bounds of the array" if the stored procedure selects results from a local temporary table with blob columns. The provider was determining the row buffer length prior to opening the cursor, this has been corrected so that it is done after the cursor has been opened.
637988 If an incorrect password was supplied in the saldap.ini file, the server could have hung when attempting to register with LDAP. Also, SA client libraries could have hung when using LDAP to find servers. This has been fixed.
637991 The Interactive SQL utility could have crashed when completing a DELETE statement, if a table alias was given. This has been fixed.
638001 Attempting to start an external environment on a server machine that was overloaded or incorrectly configured, could have resulted in the error "External environment could not be started, 'main thread' not found". Quite often this problem was due to the external environment failing to establish a connection with the server within a specific timeout, either due to the server (or server machine) being overloaded, or due to incorrect configuration. The error message has now been changed to give a more meaningful reason for the failed START EXTERNAL ENVIRONMENT request.
638003 A C/C++/Objective-C UltraLite application using a static runtime library would have always linked in the synchronization code, even if the application didn't use, or didn't enable, synchronization. On Mac OS X and iPhone, database applications not using synchronization would have still needed to link to the core, security, and network frameworks. This has been corrected so that only applications which enable synchronization will now include synchronization code. On Mac OS X and iPhone, the core, security, and network frameworks are now only required when using synchronization. As a consequence of this change, synchronization must be enabled to use the ML_GET_SERVER_NOTIFICATION() SQL function.
638011 In certain circumstances it was possible that importing SQL Anywhere resources could have failed to report some errors, making it appear that the import was successful when in reality, one or more resources failed to import. This has been fixed. An error will now correctly be reported.
638021 When the legacy option "Pressing the Esc key clears SQL Statements..." was on, and the Text Completer was open, pressing Esc would have both closed the completer and cleaed the SQL Statements field. Now, it just closes the completer.
638147 1. SyncParms.setAuthenticationParms( ",a,,b," ) was interpreted as only having two authentication parameters ("a" and "b") when it should be interpreted as 5 parameters ( "", "a", "", "b" and "" ). This has been fixed. Blank parameters are now correctly processed.

2. The documentation states that only the first 128 characters of each parameter are sent to the MobiLink server, but no limit was actually enforced. This resulted in corrupt data being sent to the MobiLink server if a value was excessively large. This has been fixed. Extremely large strings (greater than 21K characters) are now truncated prior to sending to the MobiLink server, and the MobiLink server will however report an error now if the authentication parameters' lengths exceed the server's limit of 128 bytes.

638148 When running on systems other than Linux, if the Relay Server State Manager (rshost) was not running and a client made a request invoking the client module, this request could have crashed the module. This has been fixed.
638153 If none of the $SATMP, $TMP, $TMPDIR or $TEMP environment variables were set and the Relay Server State Manager (rshost) was started without the -o command line option specified, rshast would have failed to start. Under these conditions, rshost uses '/' as the root directory and fails due to write premissions. This has been fixed.
638160 Typing a Ctrl-V while viewing a spatial reference system's Definition tab, a system trigger's SQL tab, a Java class's Description tab, or an external environment object's Contents tab, would have caused Sybase Central to either crash or hang when another object was selected in the tree. This has been fixed.
638161 When double-clicking a search result for an item in the Fragmentation tab, Sybase Central would have selected the item in the Fragmentation tab, but then would have reported "The result could not be shown because it no longer exists". This has been fixed.
638207 A LOAD TABLE statement would have failed assertion 111706 "Attempting to store invalid string value in table "{table name}", column "{column name}" if the table had a column with user datatype uniqueidentifier. The problem only happened if a user datatype was used. This has been fixed.

To fix such tables in existing databases the table needs to get recreated or a database upgrade needs to be run.

638231 The property SAConnection.State would have indicated that the connection was still open even after the connection had been dropped. This has now been corrected.
638242 In rare situations, when multiple instances of the MobiLink client (dbmlsync) were run concurrently on the same machine, one or more of the instances may have crashed. It was possible that this problem might also have manifest itself as corrupt data sent to the MobiLink server, but that would have been extremely unlikely. This behaviour has been fixed.
638260 If a database with multiple dbspaces failed to start (for any of a variety of reasons such as an invalid log file), the server could have erroneously reported:

"Assertion failed: 201117 Attempt to close a file marked as dirty".

This has now been corrected.

638268 When connecting a device that supports the OMA Device Management protocol directly to an Apache based Relay Server, the device would have displayed an error stating 揑nvalid Host Address�. The Afaria Server still provisions the device, but the Afaria OMA-DM Server logs state: "... authentication: no credentials in message �. When sending the response back to the client, the Relay Server (when run on systems other than Linux) was incorrectly setting the content-type header as text/plain instead of application/vnd.syncml.dm+wbxml. This has now been fixed.
638271 The methods ResultSet.getTimestamp() and ResultSet.setTimestamp() quietly manipulated the database timestamp value as UTC. As a result, the javascript methods Date.toString() and ResultSet.toString() would have reported different values offset by the timezone difference. These methods now manage timetamps in localtime relative to ULPOD. Databases with timestamp values stored prior to this fix might contain values that were UTC based.
638273 While connected using the SQL Anywhere or iAnywhere JDBC drivers, attempting to use setNull() in a batch update may have caused the JDBC driver to throw a datatype mismatch SQLException if the datatype specified within the setNull() call differed from other non-null set calls to the same column within the batch update. This problem has now been fixed and the datatype mismatch will now only be thrown if a non-null set call of a different type is made on the same column within a batch update.
638360 The task status uploaded by the MobiLink Agent to the consolidated database may not have been processed. This could have meant that tasks would still have been shown in the MobiLink plug-in for Sybase Central as active, when they had in fact been completed. Task results and execution counts would also not have been updated. After applying this fix, any lost status will be recovered. The trigger for this problem appears to have been random, but was more likely when many tasks were run in a short period of time.

To patch a MobiLink system setup

1. Shut down ML servers

2. execute the sql in %SQLANY12%\MobiLink\Setup\syncmss_ebf.sql

The patch only updates stored procedures, no data will be disturbed by this script. If the MobiLink system setup was installed using 12.0.0.2566 or later then this patch does not need to be applied.

638365 Execution of a DESCRIBE INDEX statement could have failed with a "table not found" error when connected to a case-sensitive database and the table (or owner) name differed from the database object name only by case. For example, when connected to a case-sensitive database, the following DESCRIBE TABLE statement would have failed:

CREATE TABLE Test ( c INT PRIMARY KEY );

DESCRIBE INDEX FOR TABLE test;

This has been fixed.

638368 Spurious "109200 Can't parallelize bloom filter" could have been observed which were incorrect. This has been fixed.
638374 The MobiLink Replay utility (mlreplay) could have been run with less than 1 simulated client (using the 杗 option), which could have caused a 揗emory allocation failed� error, or for mlreplay to have crashed. This has been fixed so that if mlreplay is run with less than 1 simulated client, it simply prints the usage message (which states the minimum number of simulated clients is 1) and exits.
638468 As of Engineering case 637453, support for the SQL Anywhere Explorer and SQL Anywhere Toolbar were removed for Visual Studio 2005 and 2008. A new command line option '/sae' has now been added to the SetupVSPackage.exe utility, to install SQL Anywhere Explorer and SQL Anywhere Toolbar if desired. The default is to still not install the SQL Anywhere Explorer and SQL Anywhere Toolbar.

For example:

SetupVSPackage.exe /i --- not install SQL Anywhere Explorer and SQL Anywhere Toolbar

SetupVSPackage.exe /i /sae --- install SQL Anywhere Explorer and SQL Anywhere Toolbar

Note, this new option only applies to Visual Studio 2005 and 2008. SQL Anywhere Explorer and SQL Anywhere Toolbar are still disabled for Visual Studio 2010. The SetupVSPackage.exe utility always install or uninstalls both the SQL Anywhere Explorer and SQL Anywhere Toolbar together. The '/sae' option only applies to '/i', use of the '/u' option always removes everything.

638473 If a Relay Server Outbound Enabler (rsoe) was successfully connected to a Relay Server, and the Relay Server was restarted while the rsoe was still running, then the server extension of the Relay Server could have crashed upon receiving the rsoe's new up channel connect request. This crash would have occurred if the rsoe tried to connect with configurations that invalidated the (already running) rsoe authentication, such as changing the farm or server id, that the rsoe was using. This has been fixed.
638477 In extremely rare circumstances, servers answering queries with keyset cursors may have become unstable, leading to an eventual crash. This has been fixed.
638481 The server could have returned an incorrect name for a temporary connection, or in rare cases the server could have crashed. The crash was more likely when using diagnostics on a mirrored server. The incorrect connection name could have been returned by a call to connection_property( 'Name' ), listed in diagnostic tracing's sa_diagnostic_connection table, or shown in an error such as "User '<user name>' has the row in '<table name>' locked". This has been fixed.
638482 If diagnostic tracing was enabled on a database and a query used intra-query parallelism, the server may have crashed. This has been fixed.
638484 Larger tables with a clustered index that had a significant number of rows inserted at the end of the clustering index, could have exhibited poor local clustering. This could have caused the optimizer to pick sub-optimal plans. This has been fixed.
638492 For MobiLink clients, except UltraLiteJ, it was possible to receive an "Out of memory" or STREAM_ERROR_MEMORY_ALLOCATION error during TLS or HTTPS synchronizations. Incorrectly attempting a very large memory allocation has bee fixed.
638494 Attempting to start an external environment when the server machine was incorrectly configured would have caused the application to wait up to 15 seconds before receiving an error from the server. An incorrectly configured server usually results in the external environment process terminating immediately upon startup; hence the server will now report an appropriate error as soon as it detects that the external environment process terminated while starting up.
638596 The use of START AT or FIRST in a subquery may have resulted in incorrect results. This was corrected.
638600 When connected using the SQL Anywhere JDBC 4.0 driver, calling DatabaseMetaData.getProcedureColumns() would have returned a result set with the DATA_TYPE column in the metadata result set containing an incorrect JDBC data type for nchar, nvarchar and longnvarchar columns. This problem has now been fixed.
638648 Round Earth polygons with long edges crossing equator could have been interpreted incorrectly, causing queries over such geometries to return incorrect results. This has been fixed.

Database with this problem will need to have the affected geometries re-inserted after applying this fix.

This change also fixes the interpretation of parameters to the ST_Polygon( ST_Point, ST_Point ) constructor. Previously, if the parameter points were close to the International Date Line, an invalid polygon (with edges longer than 180 degrees) could have been constructed. This has been fixed.

For example, consider: ST_Polygon( new ST_Point( 170, 10, 4326 ), new ST_Point( -170, 20, 4326 ) ). Now, this will be interpreted as equivalent to: new ST_Polygon( 'Polygon((170 10, -170 10, -170 20, 170 20, 170 10))', 4326 ) which is a polygon crossing the date line.

In general, the constructor will choose the interpretation that generates the polygon that fits into a single hemisphere.

638738 Windows CE applications, including SA utilities, requiring aygshell.dll to be present on the device or they would not have loaded. This worked fine on Windows Mobile 5 and later devices, but not for non-Windows Mobile CE 5.0 and 6.0 devices. This has been corrected by trying to dynamically load aygshell.dll if it is present, and skip these functions otherwise. For non-Windows Mobile CE devices, buttons are displayed on the main window for shutdown/hide/etc, instead of relying on creating menus accessible via softkeys since this would require aygshell.dll.
638755 When an ODBC application made a SQLTables() call, the TABLE_TYPE column in the result set identified materialized views as MATERIALIZED VIEW. While doing so was not against the ODBC specification, there was nevertheless a problem with applications like Microsoft Access and Crystal Reports, which filter out anything that is not marked as TABLE, VIEW, SYSTEM TABLE, ALIAS, SYNONYM, GLOBAL TEMPORARY or LOCAL TEMPORARY. Therefore, the TABLE_TYPE value returned for materialized views has been changed to be VIEW.

In addition, a new connection parameter has been added to ODBC which allows a specific string to be defined that is returned in the SQLTables() result set for materialized views. This new connection parameter is called MATVIEW, and is a string that will be returned in the TABLE_TYPE column for materialized views.

For example, to have the SQLTables() function return materialized views as type TABLE, connect as follows:

uid=dba;pwd=sql;eng=...;matview=table

This new option can be used to override this default and return to the previous behaviour. The same string is also used when SQLTables() is called with an explicit TableType filter.

638764 In rare cases, a server participating in a mirroring system could have hung temporarily, and then resumed processing requests, when dynamic tuning of the server's multi-programming level was enabled . This has been fixed.
638770 When using the Dbmlsync API (either the C++ or .Net version), events are retrieved using the GetEvent method. One of the events that might be returned is DBSC_EVENTTYPE_PROGRESS_INDEX, which includes an integer that is supposed to be between 0 and 1000 and indicates how close the current phase of synchronization is to completion. This value is intended to be used to update a progress indicator. Occasionally, the DBSC_EVENTYPE_PROGRESS_INDEX events would have been generated with values greater than 1000. This happened during the log scan phase of synchronization, when the -x command line option or the LogRenameSize sychronization profile option was used. It could also happen if operations were occurring to the remote database during synchronization. This has been fixed. The index should now always be between 0 and 1000.
638771 Some incorrect connection strings could have autostarted a database server, but left the autostarted server running after the connection returned an error.

For example:

dbping -d -c "start=dbeng10;eng=server_name"

would have returned an error, but leave a server named server_name running. This has been fixed so that the autostarted server is now stopped if the connection fails.

638835 Calls to the system function property('platform') would have returned 'WindowsVista'

when the server was running on Windows 7, Windows 2008, or Windows 2008 R2. This has been fixed.

638848 A few improvements have been made to ADOX/OLEDB table creation.

Long types are now mapped to SQL Anywhere long types. For example, an adLongVarChar column is now mapped to "LONG VARCHAR" instead of "CHAR(0)".

Wide types are now mapped to SQL Anywhere nchar types instead of char types. For example, adWChar is now mapped to "NCHAR" and adLongVarWChar is now mapped to "LONG NVARCHAR".

An adSingle column with no specifed precision will now default to REAL rather than FLOAT(0), which generated a syntax error.

An adDecimal column with no specified precision and scale will now default to DECIMAL rather than DECIMAL(0,0), which generated a syntax error.

An adNumeric column with no specified precision and scale will now default to NUMERIC rather than NUMERIC(0,0), which generated a syntax error.

An adLongVarBinary column will map to the IMAGE type rather than BINARY(0), which generated a syntax error.

An adCurrency column is now supported and will map to a column of type MONEY.

An adDate column is now supported and will map to a column of type DATETIME.

If a table or column name is not defined, OLEDB will no longer fault with a NULL pointer reference. Instead, the name "undefined" will be used.

The following code fragment is a VBScript example for creating a table using ADOX statements.

Set db = CreateObject( "ADOX.Catalog" )

Set ntable = CreateObject( "ADOX.Table" )

ntable.Name = "testTable"

ntable.Columns.Append "Col_1", adNumeric

ntable.Columns.Append "Col_2", adDate

ntable.Columns.Append "Col_3", adChar, 32

ntable.Columns.Append "Col_4", adVarChar, 32767

ntable.Columns.Append "Col_5", adLongVarChar

ntable.Columns.Append "Col_6", adLongVarWChar

db.Tables.Append ntable

638849 Statements which CREATE, DROP or ALTER synchronization profiles were not being recorded in the transaction log. If a database server needed to recover the effects of one of these statements, recovery could have failed. This has been fixed.
638854 The Server Licencing utility (dblic) has a limit on the length of the user name and company name that it stores in the license file. When it truncated the name, it could have done so in the middle of a multi-byte character resulting in a mangled name. This has been fixed.
638856 The Interactive SQL utility, the Console utility, and Sybase Central, could have terminated without an error message. This could have happened when closing an "Options" dialog, and possibly at other points, due to an uninitialized variable. This has been fixed.
638859 When connection parameters were specified on the MobiLink Monitor command line, the splashscreen did not close. This has been fixed.
638862 The Interactive SQL utility would have crashed if a file was imported and then subsequently text was pasted into the editor. This has been fixed.
638896 The MobiLink Agent for central adminstration of remote databases could have displayed unlocalized messages in its output window when running at v4 or higher verbosity. This has been fixed.
638897 The result set display format (Scrolling Table versus Text) was ignored when disconnecting from one type of database (e.g. SQL Anywhere), and then connecting to another (e.g. UltraLite). This has been fixed.
638899 The Options window had a set of radio buttons ("Show only the first result set" and "Show all result sets") which determined which result sets were displayed for statements that return more than one result set. UltraLite statements can return at most a one result set, so this option has ignore, and has now been removed.
638900 If a certain statement was prepared and described that returned no result set, and then a DDL statement caused the same statement to return a result set, client statement caching could have caused the statement to be redescribed incorrectly. This was a client statement caching peformance optimization, and before this change, there was no way to disable this incorrect behavior. For example, the following statements executed in dbisql would have returned an error on the second call foo() statement:

create or replace function foo() returns int begin return 1; end;

call foo();

create or replace procedure foo() begin select 2; end;

call foo();

This has been fixed so that if client statement caching is disabled by setting the max_client_statement_cached option to 0 for the connection, such a statement is now described correctly.

638903 A race condition in the server could have caused it to crash on shutdown. This problem only affected Solaris (Intel and SPARC), HP, AIX and Mac OS X. This has now been fixed.
638982 Creating an external procedure with a CREATE PROCEDURE statement that contained both a RESULT and LANGUAGE clause, but that did not contain a DYNAMIC RESULT SETS clause, would have incorrectly defaulted the number of dynamic result sets to 0 instead of 1. This problem has now been fixed and the dynamic result sets (if not specified) will now default to 0 if no result clause exists, and will otherwise default to 1 if a RESULT clause does exist. Note that as before, the DYNAMIC RESULT SETS value is only meaningful if a LANGUAGE clause is specified.
638986 The Query Editor could have crashed if the last time it was opened a join had been added to the query, but the join type was left unspecified (blank). This has been fixed.
639002 Changes made to the WHERE and HAVING tabs in the Query Editor were ignored after the Options button was clicked. This has been fixed.
639012 The script events publication_nonblocking_download_ack, nonblocking_download_ack and generate_next_last_download_timestamp may have incorrectly been passed the client Remote ID. This would have occurred for non-SQL scripts as well as SQL scripts that used the question mark notation. This has been fixed so that the Remote ID is no longer passed to these scripts.

Note that the documentation is correct.

639016 Attempting to execute queries that used the FOR XML clause, may have caused the server to crash when failures were encountered while fetching data. This has been fixed.
639018 The Query Editor could have crashed when opened if the initial SELECT statement contained "*" and at least one explicit column name in the column list. This has been fixed.
639021 The server may have become unresponsive when an error occurred that should have been ignored. This has been fixed. The following console message was sometimes, but not always observed on Windows 7: "TCP Listener shutting down (64)".

This change also includes the following enhancements:

- When a listener terminates, it now always writes a console message identifying the protocol and the network address, ie. HTTPS, {::}:443

- An IgnoreCodes protocol option has been added to HTTP and HTTPS protocols

639028 Conversion of some time strings to a timestamp would have failed.

A time specified as hours followed by the AM/PM designator could not have been converted to a timestamp. For example:

select cast( '11am' as time );

The work-around is to include minutes:

select cast( '11:00am' as time );

A time that included microseconds, but did not include seconds could not have been converted to a timestamp. For example:

select cast('00:00:.930' as time)

The work-around is to include seconds:

select cast('00:00:00.930' as time)

These problems have been fixed.

639107 In a mirroring system it was possible for the mirror server to get the error: "*** ERROR *** Assertion failed: 100904 (10.0.1.4075) Failed to redo a database operation (page number and offset) - Error: Table in use". This could also have occurred when dropping a global temporary table, or during database recovery, without using a high availability environment. This has been fixed.
639139 In SQL Anywhere 12 the new read-only scale-out feature was introduced which allows creation of an arrangement of read-only copy nodes to offload reporting or other operations that require read-only access to the database. Now, customers can obtain at-a-glance information about the health and availability of their scale-out configuration by using the SQL Anywhere Monitor. When monitoring a SQL Anywhere resource, a new widget option is available, "SQL Anywhere Scale-Out Topology". When monitoring the root node in the scale-out system, the new Topology Widget provides an overview of the parent/child relationships of Nodes in the scale-out system, as well as basic health and availability information.

The information displayed in the Topology Widget is as follows:

Server Name - The name of the node given when creating the scale-out system. See "CREATE MIRROR SERVER statement" in the docs http://dcx.sybase.com/index.html#1200en/dbreference/create-mirror-server-statement.html*d5e37248

Type - The node type defined when creating the scale-out system. See "CREATE MIRROR SERVER statement" in the docs http://dcx.sybase.com/index.html#1200en/dbreference/create-mirror-server-statement.html*d5e37248

State - The connection status of the node. Can be one of "connected" or "disconnected". See "sa_mirror_server_status system procedure" in the docs http://dcx.sybase.com/index.html#1200en/dbreference/sa-mirror-server-status-sysproc.html*d5e70531

Connections - The current number of connections to this node. See "sa_mirror_server_status system procedure" in the docs http://dcx.sybase.com/index.html#1200en/dbreference/sa-mirror-server-status-sysproc.html*d5e70531

Last Updated - The time the server information was last updated. See "sa_mirror_server_status system procedure" in the docs http://dcx.sybase.com/index.html#1200en/dbreference/sa-mirror-server-status-sysproc.html*d5e70531. Note that this value is not necessarily the same as the last time the Monitor fetched topology information for this scale-out system.

639140 When the Options window was opened from the Query Editor, all of the options for the Text Completer would have been inadvertently turned off. This has been fixed.
639159 In some cases, calling the system procedure sa_get_request_times() may have caused the server to crash. This has now been fixed.
639238 In very rare cases, doing full validation on a table may have caused the server to crash. For this to have occurred, the following conditions had to hold:

1) Validation was being done online.

2) The table contained blobs.

3) Table blobs were being heavily modified by other concurrent requests.

4) The right timing happened between the validation process and the blob update

process.

This has been fixed.

639289 The Relay Server extension for the Apache webserver now supports Apache 2.2.15 on Linux. Apache 2.2.15 now offers more security enhancements.
639298 Creating a server message store would have fail when attempting to create a new, encrypted SQL Anywhere database for the store. This has been fixed.
639373 When migrating a SQL Anywhere Monitor from 11.0.1 to 12.0.0 it was possible that alert thresholds for the new 12.0.0 alerts could have been incorrect for the migrated resources. This has been fixed. When the new alert thresholds were added, their columns in the database were given default values. Unfortunately, during the reload process DEFAULTS ON was not being specified. Defaults have now been turned on.
639397 The MobiLink Agent for central adminstration of remote databases may not have shut down, or may not have shut down in a timely manner, when retrying a task that had a large number of retries or a large retry delay. This has been fixed.
639535 Queries that did a sequential table scan could have failed to return all the rows in the table. This would usually only have happened when doing a DELETE over a non-transactional temporary table. This could also have happened to regular base tables with concurrent deleters as well, but the chances of this would have been very low in practice.

A workaround is to issue deletes over a non-transactional temporary table multiple times.

639646 A new alert has been added to the SQL Anywhere Monitor to provide users with notification if their scale-out system has a large percentage of disconnected nodes. The new "Scale-out Nodes Disconnected" alert takes a user-supplied threshold value. If during data collection it is detected that this threshold of disconnected nodes is exceeded, an alert is raised. The alert also contains a list of all the servers currently disconnected.
639651 The typing completion feature has been improved.

1. The text completer now opens automatically when typing. This can be turned off from the Options window by clearing the "Open automatically" box on the "Text Completion" page.

2. SQL statements and keywords are now included in the list of suggestions.

3. The completer now correctly handles databases where strings are treated as case-sensitive but identifiers are not.

4. Performance has been improved.

5. The keyboard accelerators for use when the completion list is open have changed:

Old Accelerator New Accelerator Function

Tab Ctrl+A Show a context-free list of matches

+ Ctrl+Plus Add the item with its parameter list

* Ctrl+Asterisk Add the item with its parameter and type list

" Ctrl+Apostrophe Add the item enclosed in quotation marks

6. In addition to the Enter key, pressing the Tab key while the completer list is open accepts the selected item and closes the completer.

7. Columns from internal text tables are no longer shown.

8. Completed database object names, which are also SQL keywords, are automatically quoted.

9. If a function key is pressed, or if the menu bar is used while the completer is open, the selected completion item is added, the completer is closed, and then the function key (if any) is processed.

10. The "Text Compeleter" tab in the Options window has been clarified. Options to control whether tables, views, stored procedures, and SQL functions have been removed; the SQL parsing in good enough to guide the selection of the suggested items.

639656 In some cases the Start Server in Background utility (dbspawn) could have returned the generic error, -80 (Cannot start server), instead of returning the real error. In other cases, the server could have crashed on shutdown. This has been fixed.
639657 The server may have picked an unoptimal best plan for queries requiring a reversed index scan if they bypassed the SA Optimizer (i.e., the bypass was used for optimizing the query). This has been fixed.

For example:

create index idx on T(X);

select max(T.X) from T;

639704 When performing arithmetic on DOUBLE values, if one of the inputs was NULL, an arithmetic overflow error could have been spuriously reported instead of computing the NULL value properly. The problem only affected 32-bit platforms, and has now been fixed.
639706 The startup error messages "Failed to become a daemon" and "'%1' is not a valid engine name" were not localized on UNIX systems. This has been corrected.
639712 The OLE DB provider's TABLES, TABLES_INFO, and VIEWS schema rowset support procedures do not identify MATERIALIZED VIEWs and TEXT CONFIGURATION objects correctly. Materialized views are now reported as "VIEWS", and text configuration objects are now identified as "TEXT", in the TABLE_TYPE column.

Also, the OLE DB provider's TABLES schema rowset included an unnecessary and undocumented column "PREFIXSYSOWNED". This column has been removed from the rowset to match similar behavior of the stored procedure than produces theTABLES_INFO schema rowset.

The OLE DB provider's TABLE_CONSTRAINTS schema rowset support procedure fails with the error "Column 'check' not found". This has been fixed.

The Upgrade utility (dbupgrad) should be used to update the OLE DB schema rowset support in any database used with ADO, ADOX or OLE DB.

639814 In rare circumstances, performing spatial operations could have caused the server to crash, corrupt server memory, and possibly corrupt database file contents. The problem was more likely to occur when spatial operations were active at a time when both cache pressure was high and operations such as checkpoints or cache shrinking occurred. This problem has been fixed.
639825 The 32-bit authentication value sent to MobiLink clients was being truncated to 16-bits. This has been fixed. In order to use this fix, both clients and server must be updated. If the use of this fix is not required, it is not necessary to upgrade both the clients and server.
639836 A SQL Anywhere "root" web service did not resolve a URL when the database name was provided without a terminating slash, i.e. http://localhost/dbname. The server would have returned a 404 "Not Found" HTTP status. The following URL forms were also rejected with a 404 "Not Found":

http://localhost/dbname?arg

http://localhost/dbname/?arg

The problem existed for both secure and insecure services, and has now been fixed.

640008 The following enhancements have been made to the typing completer:

- The owner name is no longer added to completed table, view, or procedure names if there is only one object in the system catalog with the given name.

- A new option has been added: "The Enter key completes text". When the option is checked, pressing the Enter key completes the text with the selected item. When the option is not checked, pressing Enter will insert a newline into the text editor, but will not complete any text. This option is checked by default. If multi-line SQL statements are usually typed, it may be that leaving this option unchecked will result in fewer inadvertent completions being done.

Note: If the arrow keys are used to change the selection in the completer list, or one of the list items is selected, pressing Enter will complete the text with the selected item. In all cases, pressing the Tab key will close the completer and complete the text in the editor.

- The completer can now complete method names for spatial columns. e.g. if the insertion point immediately follows "ST_" in any of the following statements, the completer will show only methods for the spatial column "Shape":

select S.Shape.ST_ from SpatialShapes S

select Shape.ST_ from SpatialShapes S

delete from SpatialShapes where Shape.ST_

delete from SpatialShapes S where S.Shape.ST_

update set Description='x' from SpatialShapes S where S.Shape.ST_

(Note: This is not a complete list of supported syntaxes)

When trying to complete a method name for an object other than a table/view column, the completer will suggest method names as well as other database objects whose names match the method name prefix. For example, if the insertion point is at the end of the following statement:

select (new Point()).ST_

the completer will list spatial methods, but also st_geometry_dump, StartDate, Status, etc.

640015 The MobiLink server on Windows and Linux systems now supports consolidated databases running on an ASE 15.5 server. In order to properly support it, an ASE native ODBC driver from Sybase SDK 15.5 ESD#2 or later is required.
640027 Recovery of ALTER DBSPACE or DROP DBSPACE could have failed if the original statement was executed when there were inactive pooled connections. This has been fixed.
640035 The entry in the documentation for the ml_add_column system procedure incorrectly suggested a behaviour change, that "ml_add_column names are overidden by names from the client, if they are supplied." The ml_column entries always override names and orderings sent up from the client.

Note that the point is moot for the vast majority of deployments, because most deployments: (a) have one true column ordering, and (b) do downloads. MobiLink currently does not support downloads to remotes with different column orderings with the same names using the same script version. Use different script versions, each with a known column ordering, to support downloads to different column orderings.

640037 The Create Group wizard now allows the members (Agents) for a group to be selected by pointing to a text file which contains the names of the Agents. The ability to add members by browsing the Agents defined in a consolidated database is also still supported.

Note, the text file containing the Agent names must have each Agent name on its own line.

640081 When specifying a non-default date, time, or timestamp_format option, the date/time values could have been truncated in the XML file produced by the UltraLite Unload Database utility (ulunload). This has been fixed.
640109 The deployment wizard was failing when attempting to register one of our v4.0 .Net assemblies on systems where version 4.0 of the .NET framework was not installed. This has been fixed.
640110 When executing a remote procedure call to an ASE server, if the procedure involved output parameters, then there was a chance the call would have failed with the remote error "output parameters will only be returned from this stored procedure when you use only parameter markers to pass parameter values". This problem has now been fixed and the remote call should now execute correctly.
640194 For queries containing predicates of the following forms:

A = B

A <> B

A [NOT] IN ( ... )

A = ANY ( ... )

A <> ANY ( ... )

A = ALL ( ... )

A <> ALL ( ... )

where A was a geometry column with a spatial index, extra rows may have been returned if the optimizer chose a plan that accessed the index with a scan predicate. This has been fixed.

640205 In some cases, the iAS ODBC driver for Oracle could aborted the operation and given the following Oracle error:

ORA-03145: I/O streaming direction error

This would have occurred when the driver was used to send NULL BLOBs to a table in an Oracle database and then the rows were fetched back from this table using the same database connection, and the Oracle database was running with a multi-byte character set. This has now been fixed.

640222 Remote schema names can now be imported into a project from a consolidated database. Import remote schema names can be done a number of ways:

1. Right-click "Remote Schema Names" in the "Folders" panel and click the new "Import" menu item.

2. When adding a consolidated database to a project, either with the Project wizard or the Consolidated Database wizard, the wizards will automatically check if there are any remote schema names defined in the consolidated database that are not already in the project. If there are, the wizards will ask if they should be imported.

640232 Dropping a temporary procedure could have caused recovery to fail if the procedure name was qualified with an owner. This has been fixed.
640239 The SetupVSPackage.exe utility did not update SQL Server Integration Services mapping files and the ProviderDescriptors.xml file for 64 bit DTS on 64 bit Windows. This problem has been fixed.
640240 Execution of an ATTACH TRACING statement with a LIMIT clause, either by size or by time, would generally have failed to limit the size of the trace captured. This has been fixed.
640241 In rare circumstances, the QAnywhere C++ client could have deleted a received and acknowledged message before the acknowledged status was transmitted back to the sender. This has been fixed.
640243 When adding a widget in the SQL Anywhere Monitor, the drop-down listing all the resources would have displayed the resources in random order. This has been fixed so that the resources are now displayed in alphabetical order.

Note that this problem does not apply to new Alert List and Resource List widgets.

640410 Attempting to drop a user declared within a web service may have caused the server to crash if the service was recently accessed with an HTTP request. This has been fixed.

The following illustrates the issue:

create user web identified by web;

create procedure web.sp_test()

begin

select 1;

end;

create service test type 'HTML' user web authorization off secure off url off as call sp_test();

A "DROP user web" command crashes the server if one or more database connections for the user "web" happen to be pooled.

640411 Statistics about the Disk Transfer Time (DTT) of additional dbspaces were not loaded at database startup, so they were not available for the optimizer to generate better plans. This has been fixed.
640423 Queries containing predicates that composed ST_SRID(int) or ST_Transform(int) with a spatial predicate, could have caused a crash. This only happened for queries that bypassed the optimizer (single table queries).

For example, the following query could have caused a crash:

SELECT *

FROM tablename

WHERE geometry_column.ST_Transform( 0 ).ST_Intersects( new ST_Point( 0, 0, 0 ) ) = 1

This has been fixed.

640434 A failed attempting to connect to a server which required the server to be autostarted could have leave the server running. This could have occurred if the server started had the server stop permission set to a value other than None, and server failed to start the database for certain reasons.

For example, if asatest.db is an Adaptive Server Anywhere 9 database, the following would start a server that was left running:

dbping -d -c "uid=dba;pwd=sql;dbf=asademo.db;start=dbsrv11 -x none"

This has now been fixed.

640440 The "Check for Updates" window did not close when the Esc key was pressed unless the "Cancel" button was visible. This has been corrected so that pressing the key now always closes the window.
640461 In certain very rare circumstances it was possible that the SQL Anywhere Monitor could have shut down data collection incorrectly. This would have occurred in environments where the SQL Anywhere Monitor server was consistently under heavy load. This issue has been fixed.
640470 On systems running the Chinese version of Windows XP, some private use characters were displayed incorrectly in the following places:

1. The result set table's long value window

2. The query tree (left hand pane) of the Plan Viewer

This has been corrected.

640486 The Agent wizard and property sheets now allow a description to be set for agents that are defined. The description is free form text.
640515 An application could have failed to reconnect to a database created with a user specified EncryptionControl. UltraLiteJ was failing to call EncryptionControl.initialize() on connect, hence the database could not be opened. This has been fixed.

To workaround the problem, use code that explicitly invokes the initialize() method prior to connecting to the database. For example:

// password = password to access database

// config = config object to access database

// MyEncryptionControl = user defined class extending EncryptionControl

EncryptionControl enc = new MyEncryptionControl();

enc.initialize( password );

config.setPassword( password );

config.setEncryption( enc );

conn = DatabaseManager.connect( config );

640525 The readability of the query returned by the REWRITE function has been improved.
640540 The property QueryOpened was not being increased if a reusable cursor was opened. This has been fixed.
640543 The result set returned for a query with GROUP BY and ORDER BY clauses was not correctly ordered if both clauses contained the same integer constant. This has been fixed.
640578 The UltraLiteJ utilities, Database Information utility (ULjInfo), Database Load utility (ULjLoad) , Database Unload utility (ULjUnload) , and Database Transfer utility (ULjDbT), would have failed when attempting to run on 64-bit Windows They were failing because they referenced a JRE that was not installed. This has now been corrected.
640579 Attempts to unload an UltraLiteJ database using the ULjUnload utility would have resulted in a Null Pointer exception if the database had publication IDs that were not numbered continuously from 1. This can occur if publications are created then dropped. For example:

CREATE PUBLICATION pub1 ...

CREATE PUBLICATION pub2 ...

DROP PUBLICATION pub1

This has been fixed.

640582 UltraLite does not support user-defined database properties. So when executing the statement SELECT db_property(慴ad-property�), a SQLE_UNKNOWN_PROPERTY error was generated when attempting to move to the first row of that result set. Applications written in C/C++, Javascript, ObjectiveC and .Net would have generated that error, however the Interactive SQL utility would not have displayed that error, but would have returned no rows and displayed no heading to the result set (appearing to be hung). This is now fixed.
640589 The utility SetupVSPackage.exe did not modify the file machine.config for the 64 bit .NET Framework. The machine.config file is now updated for both the 32 bit and 64 bit Frameworks on 64 bit Windows.
640596 The iAnywhere Solutions 12 Oracle ODBC driver would not have been installed by the deployment wizard. The driver was not being registered, and thus did not appear in the ODBC administrator. This has now been corrected.
640597 Starting with Version 12.0.0, on Windows computers, numbers are now formatted with the thousands separator that is shown in the Windows Control Panel. They were always being shown though on Windows Vista and Windows 7, even if they had been turned off on the Control Panel. This has now been corrected. This problem had already been fixed for Windows XP and earlier (see Engineering case 631033).

This fix also affects the "Data" tab for tables and views in Sybase Central.

640610 When using the deployment wizard to create an MSI install, the Relay Server plugin did not appear in the list of plugins, and thus was not installed. The rsplugin files have now been added.
640611 The Visual Studio Server Explorer, the Data Source Configuration Wizard, and the Entity Data Model Wizard, did not list materialized views. This has been fixed.
640621 Depending on timing, stopping a server with the Stop Server utility (dbstop) and immediately restarting it with the Start Server in Background utility (dbspawn) could have return the error:

DBSPAWN ERROR: -85

Communication error

The communication error could also have occurred if the server was started without dbspawn. This has been fixed.

640776 When running an MSI install that was generated by the Deployment wizard, the ulodbc11.dll was not self registered. This has now been fixed.
640779 In Sybase Central, the "Commands" panel for remote tasks now contains a help button for the command being edited.
640780 The SQL Server Import and Export wizard did not list materialized views. This has been fixed by changing the values returned in the 'TABLE_TYPE' column of the schema set returned by the call to SAConnection.GetSchema("Tables") for materialized views to 'VIEW'.
640786 Calls to the GetSchema method would have return an error when the restrictions vector size was less than the total number of restrictions. For example, if 2 restrictions were specified for a schema rowset that took up to 3 restrictions, the GetSchema call would have resulted in an error indicating that 3 restrictions were expected. The error was due to the fact that the array size is 2, not 3. This problem has been fixed.
640804 With the introduction of read-only scale-out systems in SQL Anywhere 12, it was possible that a scale-out system without mirroring could have lead the SQL Anywhere Monitor to incorrectly raise alerts about the arbiter and/or mirror server being unavailable when no such problem existed. This has been fixed.
640821 It was possible to get the following validation errors:

Page x of database file "<database file name>" references a table (y) that doesn't exist

or

Orphaned page (x) found in database file "<database file name>".

The database server could have left some pages in a state where they cannot be reused. The database would have continued to function normally in this state but it is possible to regain the lost pages by rebuilding the database file. This most likely would have occurred in a non-system dbspace, and has now been fixed.

640832 After following the scale out tutorial described in the documentation, the overview panel in Sybase Central would have shown warnings for the mirror and arbiter. This has been fixed. The mirror and arbiter are now excluded from the overview panel details when only scale out is used.
640901 Revoking table column permissions may have failed with the SQL error 'Permission denied: you do not have permission to revoke permissions on "Column1"' if there were column permissions granted from multiple grantors. This has been fixed.
640923 Simple queries using the aggregate GROUPING(1), but with no GROUP BY clause, would have returned the meaningless error "Invalid expression near GROUPING(1)". This has been fixed. The server now returns the error "Argument to GROUPING aggregate must be a grouping column in the GROUP BY clause".
640952 On Solaris systems, the server would have failed to start if the filesystem for the temporary file ($SATMP) was of a size greater than 4TB. This problem has now been fixed.
640955 When using the application profiler and choosing "Overall database performance based on the database schema", a new recommendation has been added when a table definition will slow query execution time. The recommendation is based on a query that will "weigh" the distribution of wide and narrow columns in a table definition (having at least 5 columns) and complain if the majority of wide columns come before the narrow columns.
641068 Tables in UltraLite can now be marked as download-only. Changes to the table on the consolidated database are downloaded during synchronization, but local changes are not sent up to the consolidated database.

Any table with the suffix "_download_only" will be marked as download-only. Tables can also be set to download-only by specifying "SYNCHRONIZE DOWNLOAD" for the sync constraint clause of the "CREATE TABLE" and "ALTER TABLE" SQL statements.

Another related change is that the sync type for a table can only be changed if it doesn't have any unsynchronized changes that need to be uploaded. Previously, the runtime was more permissive in this regard, and changing the type with unsynchronized changes could have unforeseen consequences.

641081 The MobiLink server, and MobiLink and UltraLite clients, now support DER encoded public and private keys. Previously, only PEM encoded keys were supported.
641092 The changes for Engineering case 633120, introduced a problem with returning a character string column value when the length of the column value was not bound by the consumer (i.e., the consumer does not provide a pointer to a length field). In this special case, the returned string value should be null-terminated. This has been fixed.
641095 The changes for Engineering case 635618, could have caused an INSERT statement, using the CONVERT() function to convert a string to a time, to fail assertion 111704 - 'Attempting to store invalid time value in table {table name}, column {column name}. This problem did not occur if CAST was used in place of CONVERT, and has now been fixed.
641104 Deployed remote tasks had a context menu item "Initiate...", which when clicked, would have opened a dialog to allow selecting the recipients (agents) for which the task should be initiated. This has been changed th that the menu item is now called "Initiate For All Recipients", and instead of requiring selection of the recipients, it assumes the task on all agents should be initialed. Initiating a task for a single agent, can still be done from the "Recipients" tab in the right pane.

In addition to "Initiate For All Recipients", a new "Cancel For All Recipients" context menu item has been added which requests that the given task be cancelled by all of its recipients.

641111 The changes for Engineering case 632640 have been removed, as there were other problems with LOAD TABLE on Mac OS X and Linux systems. Thus for UltraLite, the LOAD TABLE statement is only available via the desktop tools (Interactive SQL utility) on Windows.

Also, while UltraLite accepts the 'ENCODING' load option, it does not perform character set translation: the encoding of the data file must match the database. The preferred method for unloading and reloading UltraLite databases is XML files via the ulunload and ulload tools. Additionally, the ulinit tool is able to load schema and data directly from a SAS database.

641123 If a mirror or read-only copy node server was shut down while updates were being made on the primary server, the mirror or copy node could have failed to restart. Starting a mirror or copy node while updates were being made on the primary server could also have prevented that server from starting. These problems have been fixed.
641131 When connected to a database using an ODBC data source which used the ASA 9.0 ODBC driver, the Interactive SQL utility could have crashed if an INPUT statement was executed which processed TIME, DATE, or TIMESTAMP data. This has been fixed.
641265 The left pane header now contains an icon to help clarify which toolbar button represents the left pane view.
641268 The command editor for a remote task could have been inadvertently closed if the property sheet for the remote task was opened, then OK was clicked. This has been fixed.
641274 When running the Deployment wizard, specifying an invalid directory when prompted for the current SQL Anywhere install location, or specifying a non-existent directory for the target directory, would have caused the Deployment wizard to crash. This has been corrected.

Aa valid location must now be specified for your current SQL Anywhere install, and moving past the location pane in the wizard is prevented until a valid location is given. If a non-existent directory is given for the target directory, it will be created.

641276 If a SYNCHRONIZE command was canceled before the server could load the dbmlsynccli12 library, it was possible for the server to have crashed. This has now been fixed.
641280 Attempting to execute a START JAVA command from the Interactive SQL utility (dbisql) would have failed if it was installed from a 64 bit MSI created by the Deployment wizard. The error message would have been: "***** SQL error: External environment could not be started, 'external executable' could not be found". This has been corrected.
641285 It was possible that the SQL Anywhere Monitor would have allowed read-only users to resolve alerts. This has been fixed. Now, only operators and administrators may resolve alerts.
641291 Large downloads on BlackBerry devices, and simulators, would have started to fail with communication errors because the garbage collector would have done full GCs and locked out the liveness thread. This has been fixed by ensuring that all downloaded rows are row limited (requires enabling of row limiting and lazy loading).
641296 When choosing to localize with the Deployment wizard, the Installation Wizard would have appeared localized, but Language was not set in the registry on the target machine. This has been corrected so that the SQL Anywhere Language registry entry is now set to match the deployment language.
641299 When adding a new consolidated database to a MobiLink project, it is scanned to see if any remote schema names have been installed previously and copies them into the project file. However, if there were multiple remote schema names, only one would have been imported. This has been fixed.
641308 The 64-bit versions of the Log Translation utility (dbtran), SQL Remote (dbremote) or the MobiLink client (dbmlsync), could have crashed when processing a transaction log containing an ALTER SYNCHRONIZATION SUBSCRIPTION statement. This has been fixed.
641328 A statement such as the following could have incorrectly given an error:

select row_num, if row_num < 1 then 1+row_num/0 endif x

from rowgenerator

order by x

option(force no optimization)

The sub-expression 1+row_num/0 should never be evaluated as the condition row_num<1 is never true. However, in a simple statement processed by bypassing the query optimizer, if a Sort was needed to order the rows of the result, an error could be incorrectly given. This problem has been fixed.

641360 The server may have returned an incorrect result set for a query that contained a GROUP BY clause with distinct arguments, and the GROUP BY was executed using the low memory strategy. This has been fixed.
641434 If a large number of connections that had made external environment calls all shut down at the same time, then there was a chance the server would have hung one of the clients trying to shut down. In some cases, all the requests to shut down the connections would have succeeded, but the server would have subsequently hung when asked to terminate. Both of these problems have now been fixed.
641485 Attempting to make a connection with invalid TCPIP protocol options could have caused a crash in the client library. This has been fixed.
641487 If a server was started with -o <file name>, then stopped and immediately started again with the same -o <file name>, the server could have failed to start with the errors "Invalid database server command line" or "Can't open Message window log file: <file name>". This failure was rare and timing dependent, and has now been fixed so the second server will successfully start.
641490 Under exceptionally rare circumstances, the server may have crashed while executing a parallel plan with outer joins in the parallel plan parts. This has been fixed.
641702 The MSI install built using the Deployment wizard did not include the Charsets directory. This is used by the Unload Support feature, and has now been added.
641777 The EBF installs for SQL Anywhere and the SQL Anywhere Monitor did not copy the ReadMe_EBF.html file to the product folder. This has been corrected so that now it is.
641793 In very rare cases, the server could have hang if an external environment call was made at the same time that the server performed some maintenance on the database. This has now been corrected.
641806 The date_format, timestamp_format and uuid_has_hyphens options stored in a text configuration were not respected during an immediate text index update. Immediate text index updates incorrectly used the current connection option values. This has been fixed.

If an existing immediate text indexes is suspected of being effected by this problem then the text index needs to be refreshed after applying this fix.

641965 The Relay Server could have failed to reconnect the Outbound Enabler's down channel, and displayed the following error message: "RSE1015: Invalid first 'OE_DNCHANNEL_RECONNECT' packet from the outbound enabler". This has been fixed.
641994 With the release of the 12.0.0 SQL Anywhere Monitor, it is possible to monitor more resources than previously possible. Unfortunately though, monitoring large numbers of resources presents a challenge in the number of alerts it's possible to receive. To this end, new functionality has been added to the Monitor to make both filtering and deleting large sets of alerts easier.

The first new feature is two additional options for sending alert notifications via email, found under Administration -> Configuration -> Edit... -> Alert Notification

The new options behave as follows:

- "Only send email notifications for high-priority alerts", when set, will filter emails sent to operators in such a way that operators will only receive email notification when high-priority alerts are raised. Medium and low priority alerts will continue to be raised and will be viewable/resolvable from the main web-based UI as before.

- "Do not send more than the given number of email notifications per day", when set, places a hard cap on the number of email notifications sent to each operator per day. When an operator has reached their cap of email notifications for a day, an email is sent to them alerting them of this fact, as well as informing them of ways to reset the cap. This cap is reset every night at midnight, at which point the operators can once again begin to receive email notifications. Alternatively, an administrator can click the "Reset Email Notification Sent Count" button to immediately reset the caps so that operators may begin to receive email notifications again.

The second set of changes affects how the Alert Widget deletes alerts. Previously, the user would select one or more alerts and click the delete button, deleting those alerts. However, in the case of even just a few hundred alerts, this becomes unmanageable. With this change, when the user clicks the delete button on an Alert Widget, a new dialog is displayed.

Its three options behave as follows:

- "Delete selected alerts" is the same as the 12.0.0 behaviour. Only those alerts selected in the Alert Widget will be deleted.

- "Delete alerts received before" will delete all alerts received before the given time. Note that this option will only delete the alerts for resources included in this Alert Widget; if a resource's alerts are not being shown in the Alert Widget, its alerts will not be deleted by this option.

- "Delete alerts for the following resource" will delete all alerts for the selected resource. The list of resources to choose from is the same as the list of resources whose alerts are viewable from the Alert Widget.

641998 When in Debug mode, the SQL editor for a view, trigger, procedure, function or event, contained a menu item and toolbar button for the Query Editor, even though the contents of the editor could not be modified. Similarly, the SQL editor for a trigger, procedure or function, contained menu items for translating the SQL to Watcom-SQL or Transact-SQL

dialects. Now, these menu items and toolbar buttons are no longer displayed.

642010 If a Initialization utility command line used exceptionally long filenames and encryption key, and the encryption key contained at least one single quote character, the resulting database may have been unusable. The server would always have reported an incorrect encryption key. This has been fixed.
642015 Due to an uninitialized variable in the iAnywhere JDBC driver, applications using the driver (such as the MobiLink server) could have crashed when trying to access a result set. This problem has now been fixed.
642131 On Linux systems, the Relay Server could have failed to reconnect the Outbound Enabler's down channel, and displayed the following error message: "RSE1015: Invalid first 'OE_DNCHANNEL_RECONNECT' packet from the outbound enabler". This has been fixed.
642172 Even with the changes for Engineering case 629453, on Ubuntu systems, clicking on a result set cell and choosing 'Edit in Window' would have opened the edit dialog and left focus in the cell. This has been fixed.
642173 Erroneous results were returned when host indicator variables were used multiple times. This has been corrected.

For example, the statement

SELECT 1 + :x + :x:y + :x

would generate incorrect results when a value was substituted for :x. A work-around would be to remove the :y from the statement, since host indicator variables are parsed but not processed in UltraLite.

642237 Certain shapes of polygons when being loaded in a round-earth SRID, would have incorrectly given an invalid polygon error. An example of this is: "select new ST_Polygon( 'Polygon((90 0, 90 -10, 100 -10, 100 0, 97 0, 97 10, 93 10, 93 0, 90 0))', 4326 )" This has been fixed.

One workaround is to start the polygon on a different point around its ring.

642245 Calling Synchronize with a ULSyncProgressListener would have resulted in a thread left hanging after the sync had completed, which could have resulted in the application executable remaining locked after the application had shut down, requiring a device reset. This has been fixed.
642249 If a synchronization model from version 10 or 11 was added to a version 12 synchronization project, the column mapping directions were not displayed correctly for upload-only or download-only table mappings. This was only a display problem; the synchronization scripts were generated correctly. This has been fixed.
642285 Under rare circumstances, an exception (java.lang.NullPointerException) could have been thrown when switching to another synchronization model in the project. This has been fixed.
642313 Execution of the statement "BACKUP DATABASE DIRECTORY '' TRANSACTION LOG RENAME TRANSACTION LOG ONLY" would have left a gap in the offsets between the renamed transaction log and the live transaction log. This would have affected replication, synchronization and the ability to recover from backups. This has been fixed.
642329 An attempt to use an exception name in a procedure when the exception had not been declared did not report an error. This has been fixed.
642398 When running on Linux systems, if the Relay Server State Manager (rshost) was not running and a client made a request invoking the client module, this request could have crashed the module. This has been fixed.
642399 When connecting a device that supports the OMA Device Management protocol directly to an Apache based Relay Server, the device would have displayed an error stating 揑nvalid Host Address�. The Afaria Server still provisions the device, but the Afaria OMA-DM Server logs state: "... authentication: no credentials in message �. When sending the response back to the client, the Relay Server (when run on Linux systems) was incorrectly setting the content-type header as text/plain instead of application/vnd.syncml.dm+wbxml. This has now been fixed.
642441 When using the Browse button in the Deployment wizard to select the directory where the .msi file is to be created, the resulting file would only have been 199 kb in size and would have generated an error when attempting to run it. The problem would not have occurred when deploying to the default location, or manually typing or pasting in the location. This has been fixed.
642460 Starting a copy node server while updates were being applied at the primary server, could have resulted in a variety of failures, including assertion failures 100902 or 100903, or checksum failures. This has been fixed.
642524 The server could have become unresponsive when processing index scans in which a residual predicate continually rejected candidate rows for the duration of the scan. This has been fixed.
642563 When running the install generated by the Deployment wizard, the ADO.NET provider was not registered correctly. Running the utility setupvspackage.exe manually after the install finished would have correctly registered the .NET provider. This has now been fixed.
642568 If a synchronization failed with a protocol error, some later synchronization could have failed with a translator or right truncation error. It was also possible that instead of failing, the later sync could have made use of the failed syncs to, for example, insert it into the consolidated. These issues have been fixed.
642575 Diagnostic tracing could have hung, or dropped connections, or possibly crashed the server, if a connection was canceled or a connection to the tracing database was dropped. Mirroring or read-only scale-out could also have hung or dropped connections if a connection was canceled. This has been fixed.
642600 When attempting to start the server on a TeamPad series model of a Fujitsu CE device, the server would always have failed, report the error "Not enough memory". This problem has been fixed
642765 11.0.1 SQL Anywhere Monitor can not detect long running queries
642826 A NullPointerException could have occurred when the DetailsList lost focus. This has been fixed.
642827 The Relay Server for IIS7 would have failed to stream Afaria downloads, and was causing the Afaria client to timeout. This has been fixed.
642833 When under heavy load, the server may have crashed when receiving multiple requests on an HTTP connection. This has been fixed.
642836 When monitoring a primary server in a mirrored environment and a failover occurred, the Monitor would have continued to report the primary was unavailable, rather than failing over to the new primary and continuing to Monitor. It is now possible to configure the resource such that when a failover occurs, the Monitor will switch to the new primary and continue monitoring. In this case, rather than an availability alert, the user will get a "Mirror Unavailable" alert.

To implement this new behaviour, do the following when configuring the resource for monitoring:

- When providing connection information in the new SA resource wizard, provide a comma separated list of hostname:port values for the "Host" input (e.g. "my-primary-server:2638,my-mirror-server:49152"). See http://dcx.sybase.com/index.html#1200en/dbadmin/host-con-parm.html*d5e18361 for more information.

- In the "Other" input, add "NODETYPE=primary". See http://dcx.sybase.com/index.html#1200en/dbadmin/node-type-conparm.html*d5e18888 for more information.

- In the "Server" input, use the alternate server name for your mirroring system. See http://dcx.sybase.com/index.html#1200en/dbadmin/dbserver-s-41861441.html*d5e16685 for more information.

If the the location of both the primary and mirror servers is not specified, the behaviour is the same as before (i.e. an availability alert is raised for the primary and no switch to the new primary occurs).

642865 The SQL Anywhere OLE DB provider was ignoring the Location and Initial Catalog connection parameters. This problem has been fixed.

"Location" can now be used to specify the host name and port of the database server. The form is hostname:port (e.g., username-pc:3628). "Location" is mapped to the SQL Anywhere "Host" connection parameter for version 12 or later and the "CommLinks" connection parameter for version 11 or earlier.

"Initial Catalog" can now be used to specify the database to connect to when more than one database has been started by a SQL Anywhere database server. "Initial Catalog" is mapped to the SQL Anywhere "DatabaseName" (DBN) connection parameter.

642889 The changes for Engineering case 615994 introduced a problem where refreshing the Domains folder, after having selected a non-proxy table's Columns tab, would have caused a "Resource

governor" error. This has been fixed.

642971 The utility SetupVSPackage.exe would have thrown the error "Object reference not set to an instance of an object.", if the .NET Framework 4.0 was not installed. This problem has been fixed.
642980 A number of corrections and improvements have been made to the SQL Anywhere OLE DB schema rowset support procedures:

- If a catalog name is specified as one of the schema restrictions, the procedure will make sure it matches the current catalog. If it does not, a single row will be returned with NULLs.

- Any rowset that can return a catalog name in a column will now return the current database name in that column instead of NULL.

- The rows returned in the DBSCHEMA_PROVIDER_TYPES rowset have been slightly reordered for better results with Microsoft tools. This was done since Microsoft tools ignore the BEST_MATCH column and use the first row that matches the datatype it is searching for.

- In the DBSCHEMA_PROVIDER_TYPES schema, the XML datatype will now set the DATA_TYPE column to 141 (DBTYPE_XML), the IS_LONG column to 1 and return 2GB instead of 32767 for COLUMN_SIZE.

- In the DBSCHEMA_PROVIDER_TYPES schema, the TIMESTAMP WITH TIME ZONE datatype will now set the DATA_TYPE column to 146 (DBTYPE_DBTIMESTAMPOFFSET). This is supported in version 12 or later of SQL Anywhere.

- An entry for the REAL datatype was missing from the DBSCHEMA_PROVIDER_TYPES rowset. This row has been added.

To install these updates into a database, the Upgrade utility (dbupgrad), or the ALTER DATABASE UPGRADE statement can be used.

642996 If a database encrypted with AES_FIPS or AES256_FIPS was copied to a CE device, the server would have been unable to start it. This has been fixed.
643019 In rare situations, data corruption may have occurred during up channel renewal when the backend server was under high load. By default, channel renewal occurs whenever 2G of data has been uploaded to the Outbound Enabler. Since the up channel renewal mechanism has been replaced by chunk encoding in the version 11.0 Apache Relay Server, and all IIS Relay Servers, this issue only applies to version 12.0 Apache or IIS Relay Servers working against older Outbound Enablers (earlier than 11.0.1.2446) which don't support chunking. Up to 64k of upload data could have been lost when this problem occurred. This problem has now been fixed.
643157 When running the deployment wizard, if the main SQL Anywhere install did not include all components, the deployment could have failed. For example, if UltraLite was not present, the Deployment Wizard for Windows Mobile would have raised the following error:

Running CabWiz ...

CabWiz Command Line:

"C:\Program Files\SQL Anywhere 11\ce\cabwiz\cabwiz.exe" "C:\Documents and Settings\admin\Desktop\sqlany11.inf" /dest "C:\Documents and Settings\admin\Desktop\" /compress

CabWiz Output:

Windows CE CAB Wizard

Error: Section [SourceDisksNames] - path C:\Program Files\SQL Anywhere 11\ultralite\ce\ARM.50 not found

Error creating .CAB file

C:\Documents and Settings\admin\Desktop\sqlany11.CAB

This has been fixed.

643187 The Unix installer now sets up the SQLANYSAMP12 environment variable in the sa_config and sample_config scripts. On Unix systems, the sample_config script may be used to create a per-user copy of the samples. This is useful for a multi-user installation. With this change, the sample_config script will now set the SQLANYSAMP12 environment variable. The sample_config script will also generate a file (sample_env) to set the SQLANYSAMP12 environment variable, which if present will be picked up by the sa_config script. The sa_config script is used to set up environment variables for Unix. If the user has run the sample_config script to create a per-user copy of the samples, it will use the generated settings file to set SQLANYSAMP12 to point to the user's copy of the samples. If the user is running a single-user installation, the sa_config script will set SQLANYSAMP12 to $SQLANY12/samples (default setting for single-user installations).
643196 Progress messages are sent every 5% of the total estimated duration, but if no message has been sent (i.e. the percentage complete has not changed by 5%) for five minutes, another message should be sent anyway. These repeated messages were not being sent - this has been fixed.
643221 When loading a shapefile containing complex geometries, status messages may not have been printed every 5 minutes (as per the documentation), but could be delayed for arbitrary periods of time. During these periods the CPU usage of the engine would appear very high. This has been fixed.
643230 The datatypes sysname and uniqueidentifierstr were both being mapped to char(0) in Micrsoft's SQL Server Integration Services. This has been corrected so that sysname is now mapped to varchar(30), and uniqueidentifierstr is now mapped to char(36).
643281 In very rare and timing dependent cases, the server could have crashed after disconnecting a TCP/IP connection. This has been fixed.
643286 A mirror server could have crashed if multiple errors occurred on startup. A mirror server uses -xp, and the crash could have occurred if the database failed to start and the TCP/IP protocol failed to start. This has been fixed.
643296 The use of sequence generators would have caused the server to crash when it was run in in-memory mode. This has been fixed.
643314 Canceling an external stored procedure may have caused the server to crash. This has been fixed.
643317 Canceling a call to xp_sendmail(), xp_startmail(), xp_stopmail(), xp_startsmtp(), or xp_stopsmtp(), may have caused a server crash. The external stored procedures that manage SMTP mail state did not protect against the case were two threads can try to access the same SMTP state. This has been fixed.
643342 If an external environment call encountered a thread deadlock error, then there was a very small chance the application or event connection would have hung. This problem has now been fixed.
643355 Setting the value of an OUT parameter in an external stored procedures would have persisted, even without calling the set_value() function. This has been fixed.
643418 Opening the property sheet for a remote task before deploying it could prevent it from being executed by the MobiLink Agent if its SQL condition was empty and no other condition had been specified. This has been fixed.
643421 If an application was attempting to connect to a server and the server shut down between the time the protocol connection was made and the time the database connection was attempted, the application could have crashed. This has been fixed.
643423 When monitoring a SQL Anywhere resource that was under heavy load, it was possible that metrics being recorded could have been inaccurate. Most often this would have manifest itself as CPU Usage metric values being reported that were greater than 100%. This issue has now been fixed.
643456 If ALTER TABLE was used to reduce the length of a string column to less than the value of the INLINE or PREFIX values for that column, and then the database was unloaded, the reload script would have contained CREATE TABLE statements that would be rejected by the server.

This has been fixed so that the ALTER TABLE statements will now fail.

643457 Clicking the Back or Next button may not have updated the toolbar buttons properly. This has been fixed.
643463 If an application attempted to fetch a long binary value from a proxy table, and the underlying Remote Data Access server was JDBC based, then there was a chance the value would have been returned truncated. It should be noted that JDBC based Remote Data Access server classes have been deprecated and all attempts should be made to switch to an ODBC based Remote Data Access server class if at all possible. Nevertheless, the original truncation problem with the JDBC based Remote Data Access server classes has been fixed.
643571 The UltraLite Information utility (ulinfo) is supposed to display a list of the valid user IDs in an UltraLite database. In some cases, this list was not being displayed. This is now fixed.
643576 Sybase Central could have crashed when deleting a deployed Remote Task while the "Results" panel was selected. This has been fixed.
643587 The server may have hung while processing data for encrypted connections. This has been

fixed.

643590 When using the include_file parameter of the external system procedures xp_sendmail and xp_sendmail, they may have failed depending on the length of the file. This has been fixed.
643596 When executing a query that involved window functions, proxy tables and dotted references, if the query was invalid due to a missing GROUP BY reference, then there was a chance the server would have failed to return the error. In some cases, the server would even have crashed. This problem has now been fixed.

Note that this fix is a follow-up Engineering case 641477.

643598 The "Edit in Window" menu item was inadvertently shown when editing binary columns, and has now been removed. Editing the hex value in the table cell is still supported, as is loading a value from a file, but editing the hex value in a separate window was never supported.

Also, the "Edit in Window" menu item was visible if a binary column value was clicked in the Results panel, and then the "..." button was clicked. This has been fixed as well.

643642 Revoking all table permissions from a grantee that were granted by a particular grantor did not always remove the corresponding SYSTABLEPERM row. This has now been fixed.
643660 The DATEPART and HOUR functions would have returned the Hours partion of timestamps based on a 12 hour clock instead of a 24 hour clock. As a result, any afternoon timestamps would have returned the wrong Hours value. This has been fixed.
643675 When a user was in the process of creating a new widget for the SQL Anywhere Monitor, it was possible that certain metrics would not have been selectable. This problem was more likely to manifest itself if the SQL Anywhere Monitor was particularly busy at the time of creating the widget. For example, when creating a Table Widget for an SA resource, it was possible that the "Free Disk Space" category would not have let the user select which dbspace they wished to see free disk space for. This problem could also have manifest itself in the following ways:

- When the user selected a widget's "Settings..." menu item, it was possible that metrics which were present in the widget would not have appeared as selected in the list of metrics

- When creating a default dashboard for an SA resource, the table widget included on the dashboard would have been missing its Free Disk Space metrics

- If the user wanted to create resource-based dashboards during the process of adding a new user, it was possible that a widget may be missing metrics or display them improperly

These problems have now been fixed.

643681 If a temporary function was incorrectly defined to return a result set, calling the function would have given the error:

Function '<function-name>' has invalid parameter 'expression' ('OUT')

The correct error now reported is:

Result set not permitted in '<function-name>'

643698 On Mac OS systems, the Create Database wizard would have remained open after successfully creating a database. With the Cancel button disabled, it was necessary to click the Close box to close the wizard. Now, the wizard is automatically closed when database creation is successful.
643701 HP uses the character set name hp15CN as an alias for GB2312. Support for this alias has been added. Current builds of 11.0.1 and up already handled this alias.
643703 The MobiLink Replay utility (mlreplay) may have logged download success messages before the download was fully completed. In the Replay utility, a download is complete once it has received all the data from the MobiLink server and the download apply time has been reached. Prior to this change, mlreplay would have logged the download success message after receiving all the data from the MobiLink server, but before the download apply time had been reached. This has been fixed.
643728 Attempting to open the text completer while editing a stored procedure in Sybase Central would have resulted in the completer appearing and then immediately disappearing. This has been fixed.
643763 Execution of a query block that output a string constant could have caused the server crash if the optimizer chose a parallel execution plan. The likelyhood of such a crash increased under high server load and when the query occurred inside a stored procedure. This problem has now been fixed.

For version 12.0.0, this problem was most likely to be encountered when using string literals in different blocks of a Union, as follows:

SELECT 'String1', col1, col2 FROM table1 WHERE predicate1

UNION

SELECT 'String2', col1, col2 FROM table2 WHERE predicate2

For versions prior to 12.0.0 this problem was much more obscure, and likely required a constant string occurring both in a non-simple output expression and in a WHERE clause predicate.

This has been fixed.

643787 REFRESH TEXT INDEX on MANUAL or AUTO text index could have caused database recovery to fail. For the problem to have occurred, the statement had to have been executed under SNAPSHOT isolation, which must also have been enabled on the database as part of the changes being recovered. This has now been fixed.
643802 A web procedure that references another computer by name may have failed to connect if both machines supported IPv6, but the web server on the remote computer was not listening on any IPv6 addresses. This has been fixed.
643805 In rare cases, if procedure profiling was used on a database with events defined, the server could have hung. This has been fixed.
643812 When a backend server was using an id longer than 44 characters, the client may not have been able to access the backend server. This has been fixed.
643822 Schema locks were not being released when the execution of ExecuteReader() encountered an exception. If a BeginTransaction was called, a Rollback or Commit should be called by the application to release the locks. Now, if BeginTransaction is not called, the transaction will be automatically rolled when an exception is encountered.
643936 Unexpected column names could have been reported for complex expressions in the SELECT list of a statement. The problem mostly affected queries over views, for which the name of the base table column, rather than the name of the view column, could have been reported.

For example, consider the following table and view:

CREATE TABLE admin_group.employee(

pk INTEGER PRIMARY KEY,

fname CHAR(100) NOT NULL,

lname CHAR(100) NOT NULL,

cname CHAR(100) );

CREATE VIEW admin_group.v AS

SELECT e.fname AS first_name, e.lname AS last_name,

e.cname AS company_name

FROM admin_group.employee e;

In the query:

SELECT <expr> FROM admin_group.v;

the following expressions would have been described with the base table column names:

CAST( first_name AS VARCHAR(100))

(first_name)

This has been fixed so that both of the expressions above will now be described as 'first_name'.

Additionally, expressions such as ISNULL( <col1>, <col2> ) could have been described differently depending on the nullability of the first column. For example, ISNULL( first_name, company_name ) would have been described as 'fname', whereas ISNULL( company_name, first_name ) would have been described as 'isnull( employee.fname as first_name,employee.cname as company_name)'. For consistency, both of the above expressions will now be described by unparsing the expression.

643953 In the Extract Database wizard for UltraLite, when checking or unchecking publications using the space bar instead of the mouse, the Next button would not have been enabled or disabled appropriately. This has been fixed.
643960 The changes for Engineering case 635800 introduced a problem for applications running on Palm devices. Applications could have hung while saving or restoring state, for example on database shutdown. This has now been fixed.
644075 The DROP PUBLICATION statement was not being autocommitted, like other schema changing statements. This has been fixed.
644090 The MobiLink Replay utility (mlreplay) could have incorrectly calculated the download apply time when multiple simulated clients were replaying the recorded protocol. This has been fixed.
644105 When a heavy download occurred, the Relay Server Outbound Enabler may have unnecessarily timed out the Up channel. This has been fixed by relaxing the Up channel liveness timeout when the Down channel is busy.
644112 When the backend machine was under heavy load, a standalone Relay Server Outbound Enabler may have reported the following internal error

HandleNotification: Error receiving for sidx=<session_index> system error ({error code})

With this change, the error is now less likely to occur.

644122 A number a LOAD TABLE fixes have been made.

1. Arbitrary expressions were allowed in the FROM/USING clause of LOAD TABLE. If a variable was used, its value was logged to the transaction log; however, if the expression was anything other than a literal string or a variable (eg. 'c:\\tmp\\'+filename_var), the original expression would have been logged including the names of variables whose values would be unknown at recovery. The problem was fixed by only allowing a string or a variable for the file name (as documented).

2. If a LOAD TABLE statement was logged that used a variable in the FROM/USING clause and the statement was affected by database options such that the option values had to be logged with the statement, the variable name rather than its value would have been logged. This problem has been fixed.

3. When using LOAD TABLE ... WITH CONTENT LOGGING, the data logged was in the character set in which the server parsed the input file (either CHAR or NCHAR charset), rather than the original input file's character set. If the LOAD TABLE statement had an ENCODING clause, the data would have been re-translated during recovery as if it were in the specified ENCODING and potentially mangling the data. Fixed by logging an exact copy of the original input data.

4. If a LOAD TABLE statement did not contain an ENCODING clause (in which case the server assumes CHAR charset), the statement written to the log would not have one either. If the log were translated and executed against a database with a different collation, the file could be translated incorrectly since the default encoding would be different. This problem has been fixed by always logging an ENCODING clause.

5. If a LOAD TABLE statement contained an ENCODING clause that specified a 'UTF16' encoding of unspecified endian, the logged statement would also have contained an ENCODING clause with an unspecified endian. If recovery were performed on a server with the opposite endian, or if the log was translated then executed on a server with the opposite endian, the statement would not interpret the input file correctly. This problem has been fixed by never logging ambiguous names for encodings.

6. LOAD TABLE ... FORMAT XML ... WITH CONTENT LOGGING did not actually log any data and was not recoverable. This problem has been fixed.

7. LOAD TABLE ... FORMAT XML ... USING COLUMN (which is the statement that is logged for a LOAD TABLE ... FORMAT XML ... WITH CONTENT LOGGING) would have crashed the server. This problem has been fixed.

8. LOAD TABLE USING CLIENT FILE ... WITH FILE NAME LOGGING was permitted by the server and the server would then have logged a statement that referenced a client file. Access to the client file requires an active connection from the client and therefore this statement was not recoverable. This problem has been fixed by requiring WITH CONTENT LOGGING when loading from a client file. If the logging type is not specified when loading from a client file, content logging is assumed.

9. When recovering a LOAD TABLE ... WITH CONTENT LOGGING or executing LOAD TABLE ... USING COLUMN, the server would have leaked a small amount of memory for each row of data fetched from the table containing the pieces of the original file image. This problem has been fixed.

10. When executing LOAD TABLE ... USING COLUMN ... ENCODING..., the server did not check for a conflict between the specified encoding and the encoding of the column's datatype. This problem has been fixed by reporting an error if the encodings conflict.

11. LOAD TABLE and UNLOAD TABLE did not allow the ESCAPE CHARACTER to be more than 1 byte. It can now be an arbitrary string, but it is recommended that it should be no longer than one (potentially multibyte) character.

12. When using UNLOAD TABLE with a QUOTE or ESCAPE CHARACTER which was not encoded identically in both CHAR and NCHAR character sets, the quotes may not be doubled up or escape sequences may not be issued where necessary depending on the datatype of the column being unloaded. This problem has been fixed.

13. When using UNLOAD TABLE with a QUOTE or ESCAPE CHARACTER which were not encoded identically in both CHAR and NCHAR character sets and the destination charset, the quotes or escape characters could have been translated incorrectly when converting to the destination character set. This problem has been fixed.

14. ALTER DBSPACE RENAME allowed a variable to be used for the new file name but the variable name rather than its value was logged, which meant that the statement was unrecoverable. This problem has been fixed by logging the variable's value instead.

15. The SQL generated by the Log Translation utility (dbtran) for LOAD TABLE ... WITH CONTENT LOGGING (ie inserts into a temporary table) did not work correctly due to the temporary table's name being fully qualified with the user's name. This problem has been fixed.

644464 If a database had two or more 'post_login_procedure' option settings, then attempting to connect to the database would have failed with a "Subquery cannot return more than one row" error. This has been fixed.
644477 Text completion in SQL that was loaded from a Favorite may not have worked correctly if the SQL spanned multiple lines. This has been fixed.
644491 A bypass query that contained an invalid cursor range could have caused the server to crash in certain conditions. This has been fixed.

Note: please see the section "Query processing phases" for a definition of bypass queries.

644508 A SQL Anywhere HTTP procedure may have failed when configured with a PROXY clause to connect through an Apache forwarding proxy version 2.0.X. This has been fixed. Changes have also been made to improve WebClientLogging (-zoc) messages when connecting through a proxy.
644526 If a long index entry (the equivalent of a 250 character or longer ASCII string) was deleted from an index, there was the possibility of index corruption and the server crashing. This has been fixed.
644529 When deleting a resource in the SQL Anywhere Monitor, it was possible that after the delete completed, the Configure, Remove, Start/Stop and Repair buttons would still have been enabled, even though no resource was selected. This has been fixed.
644682 Using a reserved word as a label in a Transact-SQL procedure would have made the procedure unusable. This has been fixed.
644703 When using ST_AsSVG, ST_AsSVGAttr, ST_AsText or ST_AsXML to output SVG, if the Attribute SVG format option was specified, an invalid SVG document could have been generated. In particular, if an SVG shape attribute was generated, and the same SVG shape attribute was explicitly specified by the Attribute SVG format option, the resulting SVG document contained a duplicate attribute.

For example, if ls was a linestring geometry:

select ls.ST_AsSVG( 'Attribute=fill="blue"' )

would have resulted in an invalid SVG document with a duplicate attribute.

This has been fixed by only outputting the generated attribute or the attribute from the Attribute SVG format option, but not both, when there is a duplicate attribute.

644733 If a server acting as a mirror in a mirroring system required access to transaction log files on the primary that had been deleted, the mirror server would not have reported an error. The mirror server would have continued to stay running, but would not have received updates from the primary server. This has been fixed so that the mirror server will now report the error and shut down.
644855 If the Interactive SQL utility (dbisql) was open, and the results of a query were displayed, changing the Windows desktop theme from "Windows XP" to "Windows Classic", or otherwise changing the Window style from "XP" to "Classic", would have caused dbisql to crash. This has been fixed.

This issue could have manifest itself any time the Windows look-and-feel was changed from something other than Windows Classic to Windows Classic. It would also have affected Sybase Central if a table was selected in the "Folders" panel.

This issue only occurred on Windows computers. Operation on other operating systems was not affected.

644908 After an ALTER TABLE statement, some views may have been incorrectly marked as INVALID. The problem only occurred for views in which the altered table occurs multiple times in the logical expansion of the view definition. This has been fixed.
644976 If an application made at least five connections, and then all were disconnected, the messages "Disconnecting shared memory client, process id not found" and "Disconnected ... client's AppInfo is ..." could have incorrectly been logged to the server's message window. This was most likely to have occurred with an application using the SQL Anywhere JDBC driver. As a workaround, disabling connection pooling would prevent the messages from being displayed. This has been fixed so that these messages are not displayed for pooled connections.
644992 If the SQL Anywhere Monitor was particularly busy when a user attempted to load the Monitor's web-based UI, it was possible that the Flash Player debugger could have reported a null-pointer exception. If the Flash Player debugger was not installed, this problem would have manifest itself as a slower than usual load time. This has been fixed.
645001 If parallel access plans were considered by the SQL Anywhere Optimizer, then it was possible for queries to fail assertions 105804,105805, or 105816, "Cannot build parallel ...". This has been fixed.

See: "SQL Anywhere Server - SQL Usage � Query optimization and execution � Query execution algorithms � Parallelism during query execution � Parallelism in queries"

or:

http://dcx.sybase.com/index.html#1200en/dbusage/queryopt-s-4716396.html*d5e30658

645005 When using the Unload or Extract Database wizards, if unload/extract into a new database was chosen, and Strong encryption was specified with an encryption key that didn't match the confirm encryption key, then the wizards would have continued to report a key mismatch error even after the encryption type was changed to Simple (where the encryption key is not used). This has been fixed.
645138 In very rare cases, a primary mirroring server could have crashed on shutdown if the database was being updated. This has been fixed.
645142 On Windows systems, the server's process heap could have become corrupt. The only circumstance under which this was likely to occur was if a dialog was displayed (to locate a dbspace, for example) when starting a database specified on the command line. This has been fixed.
645161 The graphical and long plans may have contained incorrect total estimated runtime information. This has been fixed.

Note, this problem did not affect the quality of the plan found by the Optimizer, only the final estimated runtimes shown in the graphical and long plans were incorrect.

645223 The Relay Server for IIS7 could have unexpectedly disconnected persistent http connections after finishing relaying a server response. This has been fixed.
645325 Spatial queries that applied a predicate that measured distance (ST_WithinDistance, ST_WithinDistanceFilter, or ST_Distance) may have caused a server crash when the optional unit name was supplied to the predicate, and the optimizer chooses a parallel plan.

For example, the following query would have caused a crash if the optimizer chose a parallel plan:

select count(*)

from my_table

where my_table.geometry.ST_WithinDistance( new ST_Point( 0, 0, 4326 ), 10, 'kilometre') = 1

This has been fixed.

645468 In rare situations, the value for Index Statistics reported in graphical plans may have been incorrect. This has been fixed.
645496 For geometries in Round Earth spatial reference systems with lat, lon, z, or m axis order or, with units of measurement other than degrees, an incorrect result could have been returned by the following methods:

ST_XMin, ST_XMax, ST_YMin, ST_YMax, ST_LonWest, ST_LonEast, ST_LatSouth, ST_LatNorth

This has been fixed.

645497 No messages would have been when right-clicking a synchronization profile, selecting "Synchronize...", and then clicking OK. This has been fixed.
645529 When run on Windows desktop, UltraLite now supports long paths when creating, opening, or deleting databases.
645630 When editing DATE, TIME, or TIMESTAMP values in a result set, the usual date/time editor was not being make available, forcing the value to be edited as a string. This has been fixed.
645635 HTTP requests made to SQL Anywhere services that utilize the built-in HTTP Session mechanism (created with sa_set_http_option) may, on rare occasions, have caused the server to crash. This has been fixed.
645659 Under some conditions, the QAManager Close() method could have taken up to a minute to return. This has been fixed. The Close() method will now always complete in a reasonable amount of time.
645664 Attempting o unload and reload a database that contained a proxy table with a unique constraint would have failed with the error: "feature 'alter remote table' not implemented ". This problem has now been fixed. The "alter table...add unique" statement is no longer unloaded for proxy tables.
645665 When a message was received by the QAManager.GetMessage method when the QAManager was opened in AcknowledgementMode.IMPLICT_ACKNOWLEDGEMENT and the QAnywhere Agent was running with automatic policy, it was possible that the acknowledgement would not have been transmitted to the receiver until the next time the message store was synchronized with the MobiLink server. This has been fixed. Now the received message is immediately acknowledged.
645666 The server supports the optional use of the LIMIT/OFFSET clauses in SELECT statements as an alternative to the TOP/START AT clauses. If such a statement was used within a view definition then the server would have ignored the LIMIT/OFFSET specification and would have returned the entire result set of the underlying view query. This has been fixed so that the server now pays attention to the LIMIT/OFFSET clauses used within view definitions.
645759 Attempting to drop a temp table created by sa_copy_cursor_to_temp_table() could have failed with an error.

For example, the following sequence could have given a permission error for a user without DBA authority:

BEGIN

DECLARE myCursor CURSOR FOR SELECT 123;

OPEN myCursor;

CALL sa_copy_cursor_to_temp_table( 'myCursor','myTempTable' );

drop table myTempTable;

END

Permission denied: you do not have permission to use the "DROP TABLE"

statement

SQLCODE=-121, ODBC 3 State="42000"

Further, in some cases, the temp table created by the procedure could not have been found by a reference at a different scope level. The following sequence of statements would have returned an error for that reason:

BEGIN

DECLARE myCursor CURSOR FOR SELECT 123;

OPEN myCursor;

CALL sa_copy_cursor_to_temp_table( 'myCursor','myTempTable' );

END;

go

select * from myTempTable

These problems have been fixed. In order to get the full fix, the database must be either created with the fixed server, or upgraded using the "ALTER DATABASE UPGRADE" statement using the fixed server software. As well, the sa_copy_cursor_to_temp_table procedure now uses "CREATE LOCAL TEMPORARY TABLE" to create the table.

645771 With nightly maintenance set to its default settings, Relay Server farm metrics would not have been condensed into a representative daily value after two weeks. This has been fixed.
645801 In an environment with each server in a mirroring system having two network connections, each on one of three separate networks, so that a failure in one of the networks would still allow two of the nodes to communicate, a network outage could have resulted in both partner servers acting as a primary server. This has been fixed.
645838 The SQL Anywhere server erroneously allowed the Reserved_keywords option to be specified at the user and connection levels. Setting the option value at these levels could have caused problems with recovery, and for unloading and reloading a database. This has been corrected by no longer allowing non-PUBLIC settings for the Reserved_keywords option.

This change now does the following:

1. Temporary and user specific settings are no longer allowed

2. Existing settings for non-PUBLIC users are ignored during execution

3. Removal of existing user specific settings is allowed in order to allow cleanup

4. dbunload sets the public option setting at the beginning of the reload script

5. dbunload ignores non-PUBLIC settings in the database being unloaded

645926 If an Open Client or jConnect application attempted to prepare and execute a statement with a large number of parameters, then the server would have failed the request, or in rare cases, could have crashed. This problem has now been fixed.
645948 The LITERAL_PREFIX and LITERAL_SUFFIX characters returned by SQLGetTypeInfo for binary data types were apostrophes. If these characters were used in an INSERT statement, the value stored was incorrect.

For example: Store binary 0x1234 into column.

INSERT INTO test (binary_col) VALUES ('1234');

The result is 0x31323334.

If the LITERAL_PREFIX was 0x and the LITERAL_SUFFIX was NULL, then the value stored was correct.

INSERT INTO test (binary_col) VALUES (0x1234);

This problem has been corrected. The following types will now return 0x in the LITERAL_PREFIX column and NULL in the LITERAL_SUFFIX column:

long binary

varbinary

binary

645952 The ODBC functions SQLColumns and SQLProcedureColumns incorrectly returned a NULL value for the CHAR_OCTET_LENGTH column for XML and ST_GEOMETRY data types. ST_GEOMETRY is a new data type supported by SQL Anywhere in version 12. This has been fixed and the correct value of 2147483647 is now returned.
645953 The DBSCHEMA_PROVIDER_TYPES rowset schema incorrectly returned 0x in the LITERAL_PREFIX column for varbit types. The apostrophe character (') is now returned in the LITERAL_PREFIX and LITERAL_SUFFIX columns instead.
645959 Microsoft SQL Server has introduced two data types DBTYPE_DBTIME2 and DBTYPE_DBTIMESTAMPOFFSET that are not part of the OLE DB specification. Support for conversions between these two types and DBTYPE_STR, DBTYPE_WSTR, DBTYPE_DBDATE, DBTYPE_DBTIME, and DBTYPE_DBTIMESTAMP has now been added to the SQL Anywhere OLE DB provider.

DBTYPE_DBTIME2 differs from DBTYPE_DBTIME in that fractional seconds are included. The type corresponds to the Microsoft SQL Server TIME data type.

DBTYPE_TIMESTAMPOFFSET adds support for a timezone offset (hours/minutes). The type corresponds to the Microsoft SQL Server DATETIMEOFFSET data type.

645986 If the database server reported a "definite" rowcount for a query but then returned fewer than that many rows, dbisqlc could have displayed a subset of the rows, or possibly no rows at all. This has now been fixed.

When using the "Connect with an ODBC Data Source" option in the "Action" dropdown list of the "Login" tab of the connection dialog with the 64-bit versions of the dbisqlc utility and dbmlsync, no DSNs would have been displayed; and the 32-bit versions would only have shown DSNs that used an ODBC driver with the same major version of SQLAnywhere as dbisqlc and dbmlsync. This has been fixed, so that 32-bit and 64-bit versions now display all SQLAnywhere DSNs defined for SQLAnywhere version 6.0 and up.

Dbisqlc did not correctly handle certain connection string components which did not have a shortform (such as the new "Server" parameter). This problem has been fixed.

646150 The MobiLink Agent for central adminstration of remote databases would have given an obscure error message like:

Task task1 (ID 50): command number 1 not executed, error code 0

when a task was executed that connected to a remote database, and the adapter library (eg. mlauladapt12.dll) for that remote database was missing from the agent deployment. This has been fixed so that a clearer error message is now displayed.

646169 When run on a machine with 25 or more logical processors, the server may have hung. This hang would only have occurred on Windows and Linux systems. This problem has been fixed.

A workaround is to reduce the number of logical processors the server uses by specifying

-gtc <num>, where num is less than or equal 24.

646269 The MobiLink Server could have crashed under heavy load if the client load was a mix of old (prior to version 10) and new (version 10 or later) clients. THis has now been fixed.

A work around is to specify the -cn switch with a value of the twice the value of -w plus 1. Eg. if using the default value of -w (5), specify -cn 11. Version 12 is not affected as it no longer supports old clients.

646305 When running the uninstall for SQL Anywhere 12, after installing ado.net components, the uninstall could have failed with the following error:

"Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor. Action SetupVSPackageUninstall, entry: SetupVSPackageUninstall library: C:\Windows\Installer\MSIA8A0.tmp"

This has been fixed.

646335 In rare cases, the SQL Anywhere Monitor could have failed to fetch DBSpace names for a given SA resource; at the same time, a ConcurrentModificationException would have been reported to the message log. This has been fixed. As a workaround, clicking the "refresh data" link in the SQL Anywhere Monitor afterwards should fetch the DBSpace names without problem.
646349 The SQL Anywhere BINARY datatype was mapped to SQL Server's BINARY datatype. This could have resulted in incorrect values when exporting SQL Anywhere tables to SQL Server, as the SQL Anywhere BINARY datatype is variable length, and the SQL Server BINARY datatype is fixed length. This has been corrected by mapping the SQL Anywhere Binary datatype to SQL Server's VARBINARY datatype.
646356 The error SQLE_MEMORY_ERROR could have been reported on Windows Mobile devices when a removable media card was ejected, or when the device returned from standby. The operation should have been silently retried for a few seconds and then SQLE_DEVICE_IO_FAILED reporting if the operation still failed. This has now been corrected.
646431 In timing dependent cases, the server could have hung with 100% CPU usage. This has been fixed.
646518 In rare cases, UltraLite for Mac OS X could have gone into an endless loop while

writing to the stream during a synchronization. This has been fixed.

646543 Spatial queries that constructed large geometry values for output may have been slow to respond to a cancel command. This has been fixed.
646675 In DBISQL, and Sybase Central, SQL is displayed in a syntax highlighting editor that is restricted to using fixed-width fonts. The editor's display can be thought of as being divided into a grid of fixed-width rows and columns. The column width is based on the character width of the display font, which is called the "em width". Some languages, such as Japanese, Chinese, and Korean, contain characters that are wider than the em width. When the widths of these characters were not integral multiples of the em width, subsequent characters on the line were drawn without respecting the editor's grid of fixed column widths. This led to occasional problems where selected text was not drawn with the correct colors, and more importantly, prevented the text completer from making appropriate suggestions. This has been fixed.
646687 If a large number of concurrent connections simultaneously executed remote queries that required partial or no passthrough processing, and several of the queries made heavy usage of aliases, then the server could have crashed. This problem has now been fixed.
646703 In rare circumstances, reading a substring of a value from a compressed column (not starting at the first byte) could have caused assertion failure 201501 - "Page ... for requested record not a table page". Note that the Interactive SQL utility (dbisql) fetches long values in pieces, so selecting the value using dbisql (without using substrings) may cause this problem. This only happens on compressed columns with blob indexes. This has been fixed.
646830 In very rare cases, the server may have crashed using long identifiers in SQL statements. This has been fixed.
646846 VALIDATE TABLE could have reported a validation failure if an index on the table contained 65 or more columns, and a row existed whose index hash value was less than 256 bytes in length. This problem has been fixed.
646858 Under very rare circumstances, the server could crash during database cleaner execution. This has been fixed.
646862 Attempting to read a large Unicode string from an UltraLite database while using the engine could have caused a buffer overrun. This has been fixed.
647005 The CE Deployment Wizard Installer would have throw an exception when clicking the 'Deploy to Mobile Device Now' button on a system which did not have ActiveSync installed. This has been fixed so that the following error is now issued:

Error: Microsoft Activesync is not installed. CEAppMgr.exe is not detected. .CAB file will not be deployed.

647066 The Stored Procedure Debugger was sometimes unable to set breakpoints for statements in procedures that should have allowed breakpoints. This has been fixed.
647076 When starting the server on recent versions of Linux using the -ux or -ui command line options, or when auto-starting a server that required a GUI-based evaluation splash screen, the server may have crashed or hang. The crash would have occurred mostly on recent versions of Linux running a GTK theme engine (e.g. Clearlooks). The hang could have happened with any supported GTK version after dismissing the evaluation splash screen. This has now been fixed.

A workaround is to run without the GUI.

647077 When run on Mac OS X systems, the server would have exited with the error "Failed to

become daemon" if both the -um and -ud command line options were specified. This was due

to a limitation in the OS X GUI infrastructure. This has been fixed. The -um flag is now ignored if -ud is specified.

A workaround is to use dbspawn instead of -ud.

647154 The denial-of-service attack addressed by the changes for Engineering case 610115 could still have occurred if idle timeout had been turned off on the server using the command line option -ti 0, or the system procedure sa_server_option('IdleTimeout',0). If the idle_timeout value was not 0, the server was not susceptible. This has now been corrected.
647162 Selecting an Event object in the Details pane, then right-clicking the same event in the tree to enable or disable it, would have thrown an exception. This has been fixed.
647163 Several different spatial queries could potentially have caused server crashes, either when the Cancel was pressed, or when a SQL error was encountered while executing a parallel plan. This has been fixed.
647187 When attempting to insert a string into a proxy table that was the result of calling a builtin function, if the builtin function returned an empty string, then there was a chance that the Remote Data Access layer would have inserted a NULL value instead. For example, a statement like:

INSERT INTO my_proxy_table(my_column) SELECT RTRIM( ' ' )

may have inserted NULL instead of '' into to my_proxy_table. This problem has now been fixed.

647225 Attempts to edit table data in the "Results" panel would have failed with the error "Savepoint ... could not be found.", if the Transact-SQL transaction mode was Unchained. This has been fixed.

Note that the default transaction mode is Chained.

647327 In a CHECK constraint, the syntax OWNER.FunctionName() or Geometry.ST_Method1().ST_Method2()

was not being accepted. This has been fixed.

647331 Execution of an extremely complicated remote query that

needed to be processed in either no passthrough or partial

passthrough mode, could have resulted in a server failure.

The server now properly returns error -890.

647341 The OUTPUT...FORMAT FIXED statement wrote DECIMAL, DOUBLE, NUMERIC, SMALLINT, and TINYINT values left-aligned. They are now correctly written right-aligned, like the other numeric data types.

Note, There is no guarantee that FIXED format files created by DBISQL use the same column widths as DBISQLC.

647345 The data for an upload stream may not have been fully uploaded into the consolidated database if the consolidated database was running on Microsoft SQL Server and errors occurred in the upload. For this to have occurred, the connection property, XACT_ABORT must have been set 'ON' in the consolidated database, and the handle_error script must have returned 1000 (skip the row and continue processing). This problem has now been fixed.
647472 If SQL Anywhere was installed with an install key which contains only a subset of the whole install, such as the ALK Personal Server w/ Sync key which includes the Personal server but not the Network server, and then the Deployment wizard for Windows was run, it was not possible to select the personal server for deployment. The only database that was listed was UltraLite. The visible components have now been corrected, to show the Personal Server.
647495 On recent versions of Linux (with SELinux enabled), programs with executable stacks were forbidden. The program would have failed to start with an error like:

dbeng12: error while loading shared libraries: libdbserv12_r.so: cannot enable executable stack as shared object requires: Permission denied

This would have potentially happened with any SQL Anywhere binary, and has now been fixed.

A work around is to either disable SELinux, or run execstack -c on the problematic binaries.

647524 The server could have crashed when processing an operation that updated an index. This has now been fixed.
647547 When using Adaptive Server Enterprise 15.5 as the consolidated database, checking the MobiLink System Setup could have incorrectly reported a changed or corrupt setup, with several differences reported for columns changing type from numeric to integer,

like the following:

Table 'ml_database' has changed:

Column 'rid' has changed:

type from numeric to integer

If the only differences reported were "type from numeric to integer" then the error can be safely ignored. This has been fixed.

647663 A server running as the primary in a mirroring system could have hung when the mirror server was started. This was more likely to occur after the fix for Engineering case 637057 was applied. This has been fixed.
647682 Key constraint checking and validation errors were possible when indexing long index values if the relative position of the corresponding index columns (foreign and primary) within their respective tables were not identical. This has been fixed.
647701 Simulated clients of the MobiLink Replay utility (mlreplay) could have timed out prematurely on Linux with the following message in the log: "Unable to select socket status. The system-specific error code is 4 (hex 00000004)". This has been fixed.
647802 The server may have failed assertion 106104 "field unexpected during compilation" for queries containing correlated subselects in the WHERE clause. The WHERE subselect predicate must have been of the form "T.X = (subselect referencing R.Y)" where R.Y was an outer reference. This has now been fixed.
647830 In the SQL Anywhere Monitor web application, there were inconsistencies in how lists of resources were sorted. In some cases resources were sorted by name in a case sensitive manner, other times resources were sorted by name in a case insensitive manner, and in one case the list of resources wasn't sorted at all. This has been fixed. Now, all lists of resources are sorted by name in a case insensitive manner.
647836 Runtime errors (for example, conversion errors) during the execution of parallel plans may have caused the server to crash. This was most likely to have occurred when running spatial queries. This has been fixed.
647851 During HTTPS synchronizations, MobiLink clients could have crashed in MobiLink's RSA encryption library. This has been fixed.
647854 When running the fetchtst tool for testing the performance of queries (in samples-dir\SQLAnywhere\PerformanceFetch) on a SQL statement larger than 10K, fetchtst may have crashed. This has now been fixed.
647872 After installing the 12.0.0 2589 EBF for Windows CE, starting the server would have caused the console window to briefly flash, and then the server would have shut down. This has been fixed.
648045 When the Interactive SQL utility (dbisql) was run on AIX systems, interrupting a long-running statement by pressing CTRL-C would have resulted in dbisql crashing. This has been fixed.
648158 Attempting to use an index in a non-system dbspace with a database that was upgraded from 10.x, would have caused an assertion. This has been fixed.
648179 The server could have entered a state where it would consume 100% of a single CPU (ie. one 'core') and never leave that state. The problem was caused by a race condition when more than one thread simultaneously attempted to reference a foreign key index for the very first time; however, the effects of the race condition may not be observed until the server attempts to shut down. This problem has been fixed.
648191 In the Text Configuration Object wizard, the minimum term length could have been set to a value that exceeded the maximum term length. This has been fixed.
648204 The changes made for Engineering case 644855 could have resulted in the Interactive SQL utility (and Sybase Central) crashing when displaying a result set if run on Windows Vista or Windows 7. This has been fixed.
648209 Shared memory connections using the IDLE connection parameter were being dropped after about thirty seconds. This has been fixed.
648218 An aggregate computation on the left side of join may have produced incorrect results when more than one group was generated as a result of a GROUP BY. This has been fixed.
648493 If Perseat licensing was used, the error "Database server connection limit exceeded" may have been reported when it should not have. In order for this have occurred, in addition to Perseat licensing, the -gm server option, or http connections to disabled databases, must have also been used. When this problem occurred, the first time the error was reported was correct behaviour, but after disconnecting connections, the error may have continued when it should not have. This has now been fixed.
648497 When a consolidated was running on an Oracle server, the MobiLink server would not have advanced the next_last_download timestamp value (it is used for generating the download in the next synchronization) after it had run for certain time, even if a synchronization did contain a download request. After this occurred, the MobiLink server would have downloaded the same rows over and over again. This has now been fixed.

The work around is to restart the MobiLink server.

648499 Incorrect results were possible when an aggregate function was used in an ORDER BY clause, and when the GROUP BY expressions were contained in the ORDER BY expressions. This has been corrected.
648518 In very rare cases, the server may have crashed if the cache was low on memory and a SELECT statement contained a very large IN list predicate. This has been fixed. The server will now return the error SQLSTATE_SYNTACTIC_LIMIT.
648631 In rare cases, executing a batch statement could have caused a server crash. This has been fixed.
648786 If the primary server in a mirroring system lost quorum, just as an update caused log pages to be sent to the mirror, the primary server could have hung. This has been fixed.
648790 After applying the fix for Engineering case 635815, if an application executed a statement of the form:

INSTALL JAVA [NEW | UPDATE] JAR 'jar-name' FROM expression

then there was a chance the server would have crashed. This problem has now been fixed.

648799 In some cases, the server could have returned an error ("Parameter error") for a statement using OPENSTRING with a VALUE specifying a field reference or other complex expression.

For example, the following sequence could generate this error:

declare local temporary table T_strs( str long varchar );

insert into T_strs values ('1,a1\n2,a2'), ('3,b1\n4,b2');

select *

from T_strs T cross apply openstring( value T.str ) with( a char(10) ) as O

This has been fixed. Statements such as the above are now processed correctly without an error.

648839 When a consolidated database was running on an Oracle server and the MobiLink server login ID did not have permission to access the Oracle gv$transaction table, data that was modified in the Oracle database (without commit) before the MobiLink server started the download could have been excluded in the download stream. Data would never have been downloaded to this remote database, if a timestamp based download was used in their synchronization logic. This has been corrected so that now if the login ID does not have permission to access the gv$transaction table, the MobiLink server will fail the synchronization, if the sync contains a download request, and the generate_next_last_download_timestamp script is not defined.

For synchronization logic that does not use timestamp based download, users must grant Select permission to the MobiLink server login ID, or create a script for the generate_next_last_download_timestamp event. This script can be defined as an ignored script using the syntax, '--{ml_ignore}'.

648973 In very rare situations, the server could have crashed while shutting down a connection-scoped external environment process. This problem has now been fixed.
648987 Entering a string longer than 2048 characters in any of several fields in dialogs of the Relay Server plugin would have caused Sybase Central to crash when the 'OK' or 'Apply' buttons on the dialog were clicked. The fields that caused this issue were:

- ID and Description on the "Create Backend Server Farm" dialog

- ID, Security Token and Description on the "Create Backend Server" dialog

- Description on the "Create Relay Server" dialog

These fields now limit input to 2048 characters.

649044 When a backend server drops a connection without providing any HTTP response, IIS ver7 may inject "200 OK" as a response to the client. This may have caused MobiLink clients to be fooled to spin into an infinite loop by repeatedly getting 200OK at high frequency. This change will allow the Relay Server to detect this case and explicit send a "400 Bad request with on backend server response" response.
649123 If editing table data using the "Results Panel", (or the "Data" tab in Sybase Central), failed because of a database error, the result would have been a crash (version 11.0.1 and earlier), or an incomplete error message (12.0.0 and later). This has been fixed so that the software does not crash, and the complete error message is displayed.
649135 MobiLink clients (except UltraLiteJ) could have failed to authenticate to third party servers when using digest HTTP authentication. In particular, it would have failed when the algorithm was "MD5-Sess" instead of "MD5". This has been fixed.
649138 Editing a LONG VARCHAR value on the Data tab in Sybase Central, or in the Results panel of the Interactive SQL utility, would have caused a crash if the value was entered directly, as opposed to loading the value from a file. This has been fixed.
649298 If the "backend security" option for a backend server farm was set to HTTP or HTTPS in the relay server plugin, the setting was not written to the relay server configuration file and so was lost when the file was saved. This has now been corrected.
649315 When viewing a graph widget in either Japanese or Simplified Chinese, the time axis would have used an incorrect localization. This has been fixed. The Monitor now uses the numeric MM/DD format in these cases. Note that English, German and French locales are not affected by this fix.
649437 Version 9.0.x has an optimization for a very large number of WHERE predicates that are in Disjunctive Normal Form (DNF), which was not implemented starting with version 10.0.0.

For example:

WHERE

(T.A1 = c11 and T.A2 = c12 and ... and T.Ak =c1k) OR

.....

(T.A1 = cN1 and T.A2 = cN2 and .... and T.Ak =cNk)

AND

(other predicates)

The values for c11, c12, ..., cNk are constants, and N is large. The following sargable IN predicates were generated from the original predicates:

T.A1 IN {c11,c21, ..., cN1} AND

...

T.Ak IN { c1k, ..., cNk}

If there existed an index on table T with a prefix on any combination of the columns T.A1, ..., T.Ak, then a partial index scan using the sargable IN predicates could have been chosen in the best access plan. For example, if an index 'idx1' existed on T < A2, Ak > then the partial index scan [ {c12, ..., cN2} JNL {c1k, ..., cNk} JNL T <idx1>] may have been used in the best access plan. The original predicate would still have been applied after the index scan as a postfilter.

This optimization was not implemented starting with SA 10.0.0, as multiindex scans introduced in SA 11.0.0 and enhanced in SA 11.0.1 provided more general access methods using any combination of UNION and INTERSECTION of indexes. Multiindex scans performed better than the above optimization for small to medium size DNF predicates. However, multiindex scans can be inefficient when the number of predicates is large, for example, DNF predicates having 1,000 or more terms. This new feature addresses, in a very general way, these extreme cases and other cases when multiindex index scans use the same index. A multicolumn inmemory table is built with the exact combinations used in a DNF term, and this table is joined with the index scan. In the example above, if an index 'idx2' on T<A1, A2,..., Ak> exists, the access method

[{(c11,c12,...,c1k), (c21,c22,...,c2k),..., (cN1, cN2, ..., cNk)} JNL T<idx2>]

will be built.

Prior to this change the following multiindex scan was considered:

T<idx2: (c11,c12,...,c1k)> UNION T<idx2: (c21,c22,...,c2k)> UNION ... UNION T<idx2: (cN1,cN2,...,cNk)>

This multiindex scan could have been inefficient if N was greater than 1,000.

649468 When a SQL error occurred that was not in the last SQL statement entered, an error dialog was displayed that had a 'Continue' and a 'Stop' button. Hitting the escape key had no effect. Thisn has been corrected so that hitting the escape key on this dialog now selects the 'Stop' action.

For example, open the Interactve SQL utility (dbisql), connect to database and enter the following:

select * from foo;

select 'hello'

Since there is no table foo, the first statement generates an error dialog with a 'Stop' and 'Continue' button. Hitting escape here is now the same as pressing the 'Stop' button.

649475 If a JDBC application connected via jConnect called the method DatabaseMetaData.getSchemas(), then the server would have failed the request with the error "the 'FileVersion' property is no longer supported". This problem has now been fixed and the proper list of userids is now returned to the application.
649492 The Ping utility (dbping) can be used to specify an ODBC driver or driver manager library (-l option). If the Unix driver manager included with SQL Anywhere (libdbodmX.so) was used as the argument for the dbping -l option, dbping would have returned the error 'Failed爐o爈oad燨DBC燿river'. This has been fixed so that dbping can be used with libdbodmX.so.
649528 Execution of DROP TABLE and DROP INDEX statements would not have failed when the affected table was being referenced by another prepared statement. This has been corrected.
649614 Column constraints using the TREAT() function or IS OF predicate could have incorrectly allowed references to columns other than the column the constraint was created on. This has been fixed.
649620 When attempting to transfer a database from a BlackBerry device via USB, the on-device utility would have reported an error transferring the database, but the log would have shown the last chunk was sent. This issue did not reproduce on simulators. In most cases, an examination of the database that was received on the desktop would have shown that the database was completely transferred. This has been fixed.
649644 The ODBC driver could not properly handle the following SQL statement because it thought it was improperly formed:

create table [ab'cd] (i int )

This has now been fixed so that the driver now supports table names with embedded quotes enclosed in brackets.

649651 If a query was executed that contained a function in the SELECT list, and the function was defined in the following very specific way:

CREATE FUNCTION ...

RETURNS ...

BEGIN

DECLARE variable ...

SELECT ... INTO variable FROM ...

RETURN variable

END

and the SELECT statement within the function referenced proxy tables, then there was a chance the server would have crashed. This problem has now been fixed.

649655 The result set returned by a query could have had an incorrect ordering when different indexes could have been used to implement WHERE conjuncts and ORDER BY clause This was corrected.

An example would be

SELECT * FROM table WHERE c1 = 10 ORDER BY c2

where c1 and c2 each were the first column in different indexes.

649763 If an application connected with autostop=yes, and subsequently made a CLR external environment call, then the CLR external environment could have crashed when the application disconnected. This problem has now been fixed.
649795 Queries over indexes could have returned incorrect results if long index entries (greater than ~240 bytes) appeared in the index, with index corruption a possibility. This has been fixed.
649797 An index containing long values could have become corrupted if the table was subsequently altered to add columns, remove columns that did not appear in the index, or change the nullability of a column not appearing in the index. Also, for this to have happened, entries must have been deleted from the index. This has been fixed.
649868 A brief network outage in a mirroring environment could have resulted in one of the servers reporting "Alternate server name in use"; or the former mirror server restarting, but not becoming the primary server. This has been fixed.
649928 Sending large attachment files via SMTP using the system Procedure xp_sendmail() may have crashed the server. This problem was introduced by the changes made for Engineering case 643590, and have now been fixed.
649978 Under rare circumstances, some statements involving proxy tables could have missed expression checking. This has been corrected.
650006 On the "Create Backend Server Farm" dialog, the Apply button was not enabled when the selection in the "Client security" or "Backend security" comboboxes was changed. This has been fixed.
650010 Some large integers were being improperly scanned. This has been corrected.
650116 The server may have crashed when a stored procedure that had a SQL statement with window functions was executed. The crash did not occur immediately when the procedure was executed, but some time later. This has been fixed.

The workaround is to rewrite the SQL statement to not use window functions.

650177 Both the Interactive SQL utility and Sybase Central use the same syntax highlighting editor to display SQL. On Mac OSX systems only, hitting the tab key in the editor would have caused all the text in the editor to be selected and indented 1 tab stop. This has been fixed. Now, when the tab key is pressed, if any text in the editor is selected then that text is indented 1 tab, otherwise a tab character is inserted at the current insertion point.
650337 Queries with an outer join having the same base table as the preserved and null-supplying sides could have returned incorrect result sets. Conditions where this could happen:

1. the outer join is of the form : T as T1 LEFT OUTER JOIN T as T2 ON(p)

2. the ON predicate p has only equijoins, and at least two equijoins

3. p is of the form : T1.c1 = T2.c1 and T1.c3 = T2.c2

4. there exists an unique index on T < c1,c2>

This has been fixed.

650345 The "Connect" window allows for starting and connecting to a database on a different machine. When that action was selected, a dialog is presented with a number of fields to fill in (Host, Port, Database File Name, etc.) A checkbox to turn off Autostart was missing. It has been added.

This affected all programs that use the "Connect" window to connect to a SQL Anywhere database -- the Interactive SQL utility, Sybase Central, and the Console utility. A workaround is to add "astop=no" to the "(other)" field on the "Advanced Options" tab.

650352 Procedure profiling showed statements that executed in under 1 millisecond as using zero time, even when those statements were executed many times. This has been fixed.
650489 If an application made a remote procedure call that made changes to a remote database and then subsequently called ROLLBACK, the changes would not have been rolled back on the remote database that the remote procedure call affected, but would have been rolled back locally and on the other remote databases that the local connection modified. This problem has now been fixed.
650502 When an ODBC application called SQLDriverConnect to connect, and specified the SQL_DRIVER_PROMPT option so that the connection dialog was displayed, the connection string returned did not contain the DSN parameter. All other parameters were correctly returned, but DSN was stripped out. This has been fixed.
650626 The "Check for updates" menu items (start menu and application menus) would have always reported that a new version of the Documentation was available, even when the latest version was installed. This has been fixed.
650650 When the action setting on the Logon page of the ODBC administrator was "Start and connect to another computer", the Autostop checkbox was missing. This has been fixed.

Note, Engineering case 650345 is a similar issue in the Administration tools connection dialog.

650663 Executing a query that involved the use of the Java external environment, and that required the server to repeatedly call the same Java method over and over again, may have resulted in the performance of the query might being very slow. The server performance in this specific case has now been improved considerably. Note that this performance improvement may not help queries where multiple Java methods are called at the same time.

For example, the query:

SELECT SUM( java_p(...) ) FROM ...

involves repeatedly calling java_p and the performance of such queries will be improved with this fix. In addition, the query:

SELECT SUM( java_p(...) ), AVG( java_p(...) ) FROM ...

also involves repeatedly calling java_p, and again the performance of such queries will be improved with this fix. But, the query:

SELECT SUM(java_p(...)), AVG(java_p2(...)) FROM ...

which involves repeatedly calling both java_p and java_p2 will not benefit from this performance improvement.

650690 The server would have returned assertion failed 100905 "Articles on the table use do not match those on the table definition", if a table had publications and a simple INSERT with multiple row value constructors was executed. For example: insert into tab1 values (1,'a'),(2,'b'). This has been fixed.
650719 After a failed download, an attempt to restart the download may have failed and reported a "Protocol Error" or a read failure. This has been fixed.
650740 Execution of a DROP DATABASE statement would have failed if the automatically generated database alias name was an invalid identifier. This has been fixed.
650829 The Validate utility, or the VALIDATE utility, could have reported spurious orphaned blobs if there were indexes containing long values. This has been fixed.
650856 Synchronizations using HTTP-based communication protocols (including HTTP, HTTPS and other encrypted HTTP protocols) could have failed intermittently. When synchronizations failed, they would do so after the download had been applied and committed, and would have reported an error message like: "Data read failed. Requested 2 bytes but got 0 bytes." When this occurred the MobiLink server would have reported the error: "Connection was dropped due to lack of network activity". These failures were only likely to occur when applying the download to the remote database took longer than the stream timeout interval, which is 4 minutes by default. This problem has now been resolved
650870 The MobiLink Replay utility (mlreplay) could have crashed when using a replay DLL/shared object if the recorded protocol being replayed was not the same as the recorded protocol used to generate the code for the replay DLL/shared object. This has been fixed so that code can be generated once and then replayed with many different recorded protocol files so long as the schema is the same.
651015 When executing an "INSTALL JAVA [NEW | UPDATE] JAR" statement with a compressed jar file, there was a very small chance that some of the classes or resources within the jar would have been installed incorrectly. This problem has now been fixed.
651029 On Linux builds where the kernel was compiled to support something other than 1024 processors, the database server could have failed to detect the correct processor geometry and could have crashed. This problem has been fixed. Note that recent Linux kernels have been built with support for up to 4096 processors.
651040 When executing VALIDATE TABLE and VALIDATE INDEX statements, thay may not have used as much CPU parallelism as they could have. This problem has been fixed.
651047 In some cases, execution of parallel plans on machines with large number of cores

could be poor when dynamic adjustment of the multiprogramming level is enabled. This has been fixed.

651104 When a table contained NOT NULL columns, particularly with interspersed primary key and LONG (clob/blob) columns, rows may have become corrupted. This may have resulted in rows not being uploaded properly, values read as the wrong column, or ArrayIndexOutOfBounds error, when reading LONG values. This has been fixed.
651169 If a database containing a table with a uniqueidentifier column was unloaded using the Unload utility (dbunload) with one of the external unload options (-xi or -xx), and the resulting reload.sql script was executed using the Interactive SQL utility, a conversion error would have been reported. This has been fixed. A workaround is to avoid using -xx or -xi when rebuilding the database.
651294 When starting a 32-bit server with a large initial number of request tasks (-gn option), the server could have failed to start by reporting an error, crashing or quietly exiting. This problem has been fixed by reducing the maximum cache size to accommodate the address space needed for the stacks of the request tasks.
651323 When the distance between two ST_Points exceeded the spatial reference system's tolerance by at least a factor of 1, but less than a factor of sqrt(2), the spatial relations ST_Equals and ST_Intersects could have incorrectly returned TRUE. This has been fixed.
651344 When running the server in 'in-memory' / 'no-writes' mode (-im nw), the CREATE DBSPACE statement would have created a file in the filesystem, rather than just emulating one inside the database server. Other than the creation of the physical file, all writes to it were emulated in memory. This has been corrected so that the server no longer creates the dbspace file on disk.
651363 When a client interface could not load the language resource DLL on Windows, a message box was displayed showing the error message. This behaviour has been changed so that the message box is no longer displayed, since it could interfere with unattended systems. Instead, each client library will relay the information to its caller via appropriate methods, and dblib will set the error in the SQLCA to SQLSTATE_FAILED_TO_CREATE_STREAMS_ENV.
651373 Using the UltraLiteJ Database Transfer Utility to transfer a database from the simulator or a device to the desktop through HTTP, would have failed. Also, the device application would not have properly canceled a transfer. This has been fixed.

Note, both desktop and device side applications must be updated simultaneously.

651375 With a Microsoft SQL Server consolidated, MobiLink client synchronizations may have failed after making schema changes. The MobiLink synchronization log would have shown SQL Server error #16954. When using SQL Server tracing, an additional error #156 (syntax error) could have been seen. The cause appears to be a bug in SQL Server 2005, but has not been seen on SQL Server 2008. This has now been fixed.

To patch an existing MobiLink system setup:

1. Shut down the MobiLink servers

2. execute the SQL in %SQLANY12%\MobiLink\Setup\syncmss_ebf.sql

The patch only updates stored procedures, no data will be disturbed by this script. MobiLink systems setup after installing this fix do not need the patch to be applied.

651383 As of the changes for Engineering case 633120, a SQL query producing multiple result sets was not handled correctly by the SQL Anywhere OLE DB provider. This problem has now been corrected. The cursor is no longer closed after the first result set is processed.
651491 Typing Ctrl-Z in an unmodified editor would have marked it as modified. This has been fixed.
651508 If an invalid combination of TCP protocol options was specified (eg. DoBroadcast=DIRECT but no HOST=) in a connection string, the client application could have crashed. This would only have happened on Unix systems. This has been fixed.
651510 Execution of the utility SetupVSPackage, would have shown an error: "Object reference not set to an instance of an object." if machine.config file did not have the entry <DbProviderFactories>. This problem has been fixed.
651520 Displaying the results of an Index Consultant run of a large workload could have required an excessive amount of memory, causing Sybase Central to crash if there was not enough physical memory available. This has been fixed.
651656 In some cases, setting a SQL Remote option could cause a server crash. This has been fixed.
651658 On Windows systems, SQL Anywhere provides a version 1 (registry) performance provider. Windows should generate WMI classes automatically after the counter dll is registered, but these classes were generated only after instances of these objects (i.e. server, database and connection) existed in a process running in session 0 (i.e. as a service in Vista and up). This has been fixed.
651692 When a plug-in failed to load on startup, other plug-ins may then not work correctly. This has been fixed.
651694 If the connections between servers in a mirroring system used encryption, the primary server could have hung when performing an operation which required exclusive access to the database (e.g. a checkpoint) if other update activity was also occurring. This has been fixed.
651707 The iAnywhere.mib file that shipped with the SNMP agent was not SMI compliant. This has been fixed.

Note that this change did not affect the software itself.

651723 Opening a column's Property sheet would have caused the error: "Support for spatial is not available for this CPU", when the server was run on a system with on a Pentium III processor. The same error would also have occurred in the Function and Domain wizards, and the Spatial Reference Systems folder if it was selected in the tree. These issues have been fixed.
651729 In some rare cases, the server may have hung if diagnostic tracing had been enabled. This has been fixed.
651846 On Windows systems, the performance monitor might not have displayed counter values provided by the server. Typically this would have happened when a shared memory client that was attached to the server terminated abnormally. Counter values should not display for subsequent servers until all processes holding handles to the dead server (e.g. shared memory clients) are terminated. This has been fixed.
651880 The reply-to address for messages originating from a Weblogic 10.3 JMS server were formatted in such a way that they could not have been resolved by the JMS connector. This has been fixed.
652034 When analyzing an Application Profiling or Diagnostic trace, the Application Profiling wizard may have recommended changing the -gn setting, even though this no longer applies to version 12 servers. This has been fixed.
652037 The Unload utility (dbunload) could have crashed when attempting to unload a database into an existing database. A crash would have occurred when a data-only unload (-d) was being done, and a user or table in the source database did not exist in the destination database. If the unload was done through the Sybase Central Unload wizard, the wizard would have crashed. This has been fixed.
652075 The changes made for Engineering case 644855, to correct a crashing problem when the Windows desktop appearance was changed, caused fonts to not render properly in the result set table. Some characters could have been displayed as boxes in the column headers for result sets. This has been fixed.
652107 If a foreign key had both ON UPDATE and ON DELETE actions, renaming a column referenced by the foreign key could have caused one of the system triggers to be deleted and the other to be left unchanged. A trigger for an ON UPDATE action could have been converted to an ON DELETE action. This has been fixed.
652131 Sybase Central could have failed to find the results of a search when editing an object in the right pane, if "Cancel" was clicked when asked to save changes before showing the search result. This has been fixed.
652188 When a table was selected in the tree and the Indexes tab was shown in the right pane, there was no File -> New -> Index... menu item. As such, it was only possible to start the Index wizard from the toolbar button. This has been fixed.
652201 The HOST connection parameter is usually of the form host:port, but can also contain a comma separated list of host and port pairs. The ODBC driver usually splits the HOST connection parameter and displays it in the Administrator as two text fields labeled host and port. When it was a list of values, it was incorrectly splitting it at the first colon. This has been fixed.
652202 When editing an "Execute SQL" command in a remote task, the caret could have been displayed in the wrong position if the text contained tab characters. This has been fixed.
652211 In dialogs, components are often labelled with text that has a mnemonic, shown with an underlined letter. It is permissible for two components to have the same mnemonic. In that case, pressing ALT and the mnemonic should move the focus to the next component which has the given mnemonic. This moving of the focus was broken if the component which currently had the focus was an editable combobox. This problem was surfacing in the Connect dialog used by the admin tools when starting a database on another computer. The "i" mnemonic is shared by the "Database file" field and the "Find" button. When the "Database file" field had focus, pressing ALT+I did not move focus to the "Find" button. This has been fixed so that now it does.
652220 The server could have hung in some very rare circumstances when there was considerable temporary file growth. This has been fixed.

A workaround is to pre-grow the temporary file using the ALTER DBSPACE statement, or by creating a DiskSpace event to periodically grow the temporary file.

The same issue was fixed for earlier version by Engineering case 580773.

652221 In some cases, calling a web services stored procedure may have crashed the server. This has been fixed.
652243 MobiLink clients using persistent HTTP 1.0 connections may fail occasionally when using the Relay Server. The failure was isolated to synchronizations that ran into a rare timing problem. This has been corrected.
652244 An internal unload/reload (i.e. dbunload -ii) that encountered a SQL error could have hung or caused a subsequent unload/reload on the same server to hang. This problem has been fixed.
652247 The title line of the usage screen for the MobiLink Agent stop utility (mlastop) may have contained an untranslated character. This has been fixed.
652248 Clicking 'Apply' on the Auditing tab filter pane, could have thrown an exception causing Sybase Central to crash. This has been fixed.
652249 The title line of the usage screen for the QAnywhere Stop utility (qastop) may have contained an untranslated character. This has been fixed.
652253 In some rare cases, when run on HP, AIX, and Solaris systems the server may have crashed on shutdown. This has been fixed.
652263 The usage text for the Relay Server Outbound Enabler didn't describe what were the valid options for the -cr option. This has been corrected so that the values are now listed for the tcp options, server certificate options, and client certificate options.

In addition, http authentication options, proxy options, and proxy authentication options, have been added in version 12.0.1.

652382 The Relay Server did not work with a Relay Server Outbound Enabler (RSOE) that was behind an HTTP 1.0 proxy. The Relay Server has now been fixed to adapt to HTTP version downgrades done by an HTTP 1.0 proxy, and is needed when working with a 12.0.1 RSOE in conjunction with a HTTP 1.0 proxy.
652411 If an error occurred accessing the tape drive when beginning a tape backup, the BACKUP statement may have hung. This has been fixed.
652543 The server may have crashed during inserts into a view, if the view column was not a base table column. This has been fixed. Now the correct error SQLSTATE_NON_UPDATEABLE_VIEW is returned.
652547 Altering the schedule for an event to remove a days-of-month specification did not set SYSSCHEDULE.days_of_month to null. This has been fixed.
652577 Sybase Central could have crashed while the property sheet for a client message store was open, if adding a new property was started, but then the action was cancelled. This has been fixed.
652587 When running a database without a transaction log, performance could have been significantly slower than in previous versions. This problem has been corrected. See Engineering case 608904 for a similar issue..
652592 Attempting to connect to a read-only scale-out database with a non-ASCII database name using the NODETYPE connection parameter could have incorrectly failed with a "Specified database not found" error. The database name was being sent back in either OS-charset or DB-charset, but the client needed it to be in client-charset. This has now been fixed.
652609 When using Oracle as a back-end database, synchronizations may have failed with the error ORA-08207. This has been fixed.
652735 When a Relay Server shuts down, it notifies connected Relay Server Outbound Enablers (RSOE) to perform an internal shutdown before the RSOE enters recovery mode. The RSOE also notifies the Relay Server via the down channel when the the RSOE shutdown is completed. The HTTP subsystem used on IIS7.5 prevented a Relay Server from receiving the shutdown notification reliably and in turn caused an unnecessary hard shutdown of the Relay Server after a 100 sec delay. This has been fixed so that the Relay Server now handles this case properly as a graceful soft shutdown without a delay.
652739 If an application prepared a batch insert using the SQL Anywhere JDBC driver, and the last row in the batch involved a call to setNull() and the datatype passed to setNull() was different than the previous set of setX calls for that column, then there was a chance the JDBC driver would have inserted incorrect data. This problem has now been fixed.

For example, the following set of calls would have inserted incorrect data into the table test:

PreparedStatement pstmt = con.prepareStatement( "insert into test values(?,?)" );

pstmt.setInt(1, 1001);

pstmt.setString(2, "this is row #1" );

pstmt.addBatch();

pstmt.setInt(1, 2001);

pstmt.setString(2, "this is row #2" );

pstmt.addBatch();

pstmt.setInt(1, 3001);

pstmt.setString(2, "this is row #3" );

pstmt.addBatch();

// note the fact that we are switching datatypes below

pstmt.setNull(1, java.sql.Types.SMALLINT);

pstmt.setString(2, "this is row #4" );

pstmt.addBatch();

pstmt.executeBatch();

Again, note that this problem would not have occurred if instead of using java.sql.Types.SMALLINT, the application instead used java.sql.Types.INTEGER. In addition, if the call to setNull() was not in the last row of the batch, then again this problem would not have occurred, even if the application switched datatypes for the setNull() call.

652752 When starting dbisqlc, or an ODBC application with a connection string containing LINKS=TCPIP, if there is an error connecting the connection dialog is displayed. It was incorrectly defaulting to "connect to a running database on another computer", losing the LINKS=TCPIP setting. If TCP parameters were specified, such as LINKS=TCPIP(PORT=2638), then it worked correctly. This has now been fixed.
652756 When validating a table that contained spatial data on 32-bit x86 systems where the processor did not support the SSE2 instruction set (the minimum required for SA spatial features), the database server would have reported a non-fatal assertion error

113300 or 113302 "failed to build cursor to validate". This problem has been fixed and the underlying error is now reported: SQL error (-1515) -- Support for spatial is not available for this CPU.

652759 If a table was included in a MobiLink publication and one or more options were defined for that publication, but there were no synchronization subscriptions defined, the table could not be ALTERed to, for example, add a new column. This has been fixed.
652791 If a statement for a directory access table failed with the error SQLSTATE_OMNI_REMOTE_ERROR, and this statement was the last statement of the transaction then all subsequent remote server statements of this connection would have failed with the same error. This has been fixed.
652911 If an INSTALL JAVA UPDATE statement was executed to update an existing java class, the server would have incorrectly added a new system object id rather than reuse the already assigned object id. This problem has now been fixed.
652920 A NullPointException was possible when executing an UPDATE statement when nothing was updated. This was corrected.
652949 The trigger operation condition 'UPDATE( {column-name} )' did not return TRUE if the column value had been changed by a previously running BEFORE UPDATE row-level trigger only. This has been fixed.
652975 A NullPointerException was possible with large temporary tables and row limitation. This was corrected.
653052 Using the system procedure xp_sendmail with an attachment larger than about 55 kB may have resulted in the attachment being corrupted. This has been fixed.
653055 Any parameters entered on the MobiLink Monitor's command line with a Multibyte Character Set would have been mangled. This has been fixed.
653058 When creating a rule with a "Custom" schedule type, the schedule that was saved could have been incorrect if "Run rule every" was turned off in the "Schedule Editor" window. The rule was saved such that it was run every 10 minutes. This has been fixed.
653070 A COMMIT could have failed after a failed synchronization involving clobs or blobs. The failure could have left the blobs and/or clobs present in the transaction log in a bad state. This has been corrected. A work-around is to disconnect and then to reconnect to the database.
653122 The ADO.NET provider would have returned an empty string for an error message in some scenarios. This problem has been fixed.
653125 During the loading of data using "ulconv load", columns whose values were NULL may have been set to default values. This has been fixed.
653158 The methods ULConnection.CountUploadRows, ULConnection.GetLastDownloadTime, and ULConnection.ResetLastDownloadTime would have failed on Windows desktop when provided named publications instead of ULConnection.SYNC_ALL_DB. This has been fixed.
653183 The NUM_CONNECTED_SYNCS ppv metric and the "Synchronizations", "Started Synchronization Rate", "Synchronizations Started", and "Unknown Connected Clients" metrics incorrectly considered syncs that had failed during the download and were waiting to be restarted as being connected and so would show an incorrect value in the log or in the SA Monitor. Also, as a consequence, the server would prompt for confirmation to kill active syncs during hard shutdown even if all the syncs in the system are waiting to be restarted. This has been fixed.
653184 It was possible for the server to crash while opening a statement that used a parallel execution plan if specific types of errors were detected while building the plan. One particular form of the error causing this problem could arise when using a spatial predicate on systems with Pentium III processors. Instead of reporting an error, it was possible under specific circumstances for the server to crash. This has now been fixed.
653185 Specific spatial operations could have caused a server crash when running on systems with Pentium III processors. This has been fixed. These operations now correctly return an error.
653245 The value for the column "columns" for the system view SYS.SYSFOREIGNKEYS is generated using a LIST() function, but the function did not include an ORDER BY and so the result returned could have varied. This has been fixed by adding an ORDER BY clause.

Note, the system view must be recreated by upgrading or rebuilding the database for the new view definition to be used.

653316 When deleting rows from an UltraLite database, the Interactive SQL utility would have incorrectly reported the number of rows affected by a DELETE. The message "1 row(s) deleted" would have been shown in the Message pane, regardless of how many rows were deleted. This has been fixed.
653467 If an UltraLite database had a table with a LONG VARCHAR column, and that column contained XML data, attempting to view that data in the Interactive SQL utility's cell editor (in the XML Outline tab) could have failed with the error: "An invalid XML character (Unicode: 0x0) was found in the element content of the document". This is now fixed.
653470 MobiLink clients (except UltraLiteJ) could have failed to authenticate to third party servers or proxies when using digest HTTP authentication. In particular, if the third party server's or proxy's response contained nextnonce attribute in the Authentication-Info header. This has been fixed.
653540 The Relay Server State Manager (rshost) could have crashed if initialization failed. Specifically, if creating the shared memory failed. This has been fixed.
653588 If tracing was suddenly detached (because, for example, the server receiving the tracing data was shut down) at the same time as a deadlock occurred, a deadlock victim may have failed to write a ROLLBACK to the transaction log. This may have lead to an incorrect partial commit of a deadlocked transaction. This has been fixed. This problem is expected to be very rare.
653590 Diagnostic tracing, or application profiling to LOCAL DATABASE could not be used when the server was started with the command line option -sb 0 (disable broadcast listener). This has been corrected. A workaround is to manually supply a connection string (ATTACH TRACING TO <connstr>) with the DoBroadcast=NO option, rather than using the LOCAL DATABASE clause.
653591 Attempting to attach tracing to an older version database file could have caused the server to crash. This has been fixed so that attempting to attach tracing to an older version file now returns the error "ATTACH TRACING could not connect to the tracing database" (-1097).
653606 Entering an invalid TIME value when editing a result set could have caused then Interactive SQL utility to report an internal error. This has been fixed.
653706 The 'TOP limit START AT startat' and 'LIMIT limit OFFSET offset' constructs now support 1 - simple arithmetic expressions for 'limit', 'offset', 'startat' arguments;

2 - TOP supports the 'ALL' limit indicating that all rows are to be returned after the specified 'startat';

3 - the maximum value for (limit + offset) is now 9223372036854775807 = 2^64-1

The new grammar is as follows:

TOP range_expression range_offset

TOP T_ALL range_offset

LIMIT range_expression [OFFSET range_expression]

range_expression:

integer_or_var | '(' simple_expression ')'

simple_expression:

integer_or_var | simple_expression '+' simple_expression

| simple_expression '-' simple_expression

| simple_expression '*' simple_expression

| '(' simple_expression ')'

range_offset: /* empty */

| T_START T_AT range_expression

653743 The Import wizard would have reported an internal error when importing a shapefile if no spatial reference system was selected. This has been fixed.
653884 The Mobilink Server would have logged the error "Light weight poll request failed" after every poll attempt from an Ultralite client (through the use of the ML_GET_SERVER_NOTIFICATION function), even if the polls were actually successful. This has been fixed
653929 The Interactive SQL utility ignoring the setting of the "Automatically refetch results" option and assumed it was on. This has been fixed.
653930 The Console utility could have stopped refreshing database and/or server properties after changing the set of properties which were displayed, even after it was restarted. The problem was sensitive to the speed with which properties were selected or unselected. This has been fixed.
654078 While running a VALIDATE DATABASE statement, the server could have erroneously reported assertion failures indicating checksum failures or other errors that would indicate database corruption. The problem could only have occurred if the database file was being actively extended at the same time as the validation was being performed, and even in those circumstances the problem would have occurred only very rarely. The database was not actually corrupt and would have been valid when restarted. This has now been fixed.
654244 On some Chinese Windows systems, the fields for entering the MAC address for back end servers was too narrow to see both digits of each byte of the address. This has been fixed.
654249 The External Environments folder was erroneously including an entry for dbmlsync. This has been fixed.
654253 In versions of the Interactive SQL utility 10.0.0 and later, using an ISQL parameter for the value of an option in a SET OPTION statement did not work because the parameter was not substituted correctly. This has been fixed.
654259 The changes for Engineering case 650489 may have caused execution remote procedure calls to an ASE remote server to fail with a strange "unchained transaction mode" error. This problem has now been fixed.
654282 On the Format page of the the Options->Editor dialog, when selecting "Custom" from the Foreground or Background drop downs, the custom color selection dialog would have appeared with a color menu over top of it. This has been fixed so that the menu now closes before the color selection dialog opens.
654284 The server could have crashed if the STOP SERVER or STOP ENGINE statement was called from an event or HTTP connection. This has been fixed.

Note that the 'STOP SERVER' syntax is new to version 12 (older servers support 'STOP ENGINE').

654294 When canceling a query involving spatial operations, there was a small probability the server could have crashed, or failed to release resources. This has been fixed.
654425 In the Options window, the components for editing the quitting time were enabled even if the "Quitting time" checkbox was not checked. Now, the components are disabled when the checkbox is not checked.
654434 When sorting the plug-in names in the Plug-in dialog, an exception would have been thrown if a plug-in was first reloaded. This has been fixed.
654446 If there were multiple applications running simultaneously, the ADO.NET provider could have failed to load dbdata.dll. This has now been fixed.
654635 If HTMLHelp documentation for SQL Anywhere was installed, it was possible for the Index Consultant to open DCX help under some circumstances. This has been fixed.
654636 Opening a .saplan file in the "Plan Viewer" window and clicking the "Print" button did not do anything. This has been corrected so that it prints the plan. There was no problem printing plans which were generated by clicking the "Get Plan" button.
654648 The substr() function was permitting LONG VARCHAR values to be used as the first argument to the function. This has been corrected
654684 References to derived table columns may have been incorrect when temporary tables were present and the derived table was used to load the temporary table. This has been corrected.
654759 Changes to the members list were not saved when the OK button in the property sheet for a destination alias. Also, the Apply button was not enabled after a member was added, removed, or edited. Both of these problems have now been fixed.
654790 In very rare cases, the server may have crashed with a floating point exception when slightly loaded. This has been fixed.
654801 The SQL Anywhere Optimizer may have incorrectly pruned, without costing, optimal plans during query optimization. This has been fixed. This incorrect pruning would most probably have affected the final execution plans for complex, but inexpensive (i.e., the optimal plan has a small runtime) queries.
654938 In rare cases, a corrupt TCP packet could have caused the server to crash. The server now validates the packet header before do anything with the packet. If it is corrupt, the packet is dropped.
654952 Under rare circumstances, the server could have hung when SUBSCRIBE BY values were being changed for an article while large numbers of connections were updating tables in the database. This has now been fixed. A workaround is to avoid changing SUBSCRIBE BY values simultaneously with connections performing INSERT, UPDATE or DELETE operations.
654981 The Console utility could have stopped refreshing connection properties after changing the set of properties which were displayed, even after restarting DBConsole. This has been fixed.
655157 If there were any missing messages, SQL Remote would have asked for a resend after it had reached its receive polls given by the -rp option. This resend logic could have caused the publisher to re-scan the transaction log(s) and slow down replicating new transactions, especially on heavy load databases. This has been changed so that when a message in a multi-part message series (SQL Remote will generate multiple messages for a single transaction to form a multi-part message when the transaction is too big to fit in a single message) is missing, SQL Remote will not immediately ask for a resend, if the received messages are not followed by any messages that contain a commit or any messages that belong to another multi-part message series. This new logic will help users who

need to shut down or kill SQL Remote when it is sending multi-part messages to its subscribers.

655351 Temporary files created by SQL Remote and Log Translation utility may not have been deleted. This problem has been fixed.
655358 During the loading of data using the UltraLite Load XML to Database utility (ulload), columns whose values were NULL may have been set to default values. This has been fixed.
655524 A MERGE statement on a table that had a column with DEFAULT AUTOINCREMENT would have increased the autoincrement value for every matching row independently of whether the value had already been used for an INSERT or not. This behaviour has been improved so that the server only generates a new autoincrement value if the matching branch is an INSERT and the value will be used.
655533 Under rare circumstances, inserting the result from the Round Earth linestring() function, or using the linestring() function in a query, could have crashed the server, if the line string crossed the equator. This has been fixed.
655544 The 'Next' button and the 'Create' button were disabled in the Add Resource page when an invalid time was entered. This has been fixed.
655570 The tab order on the Edit Configuration:Maintenance tab was not correct.. This has been fixed.
655573 The integrated Outbound Enabler could have crashed Mobilink, if in a Relay Server farm environment, one of the Relay Servers in the farm was down. This has been fixed.
655574 The integrated Outbound Enabler library was not being unloaded correctly when the Mobilink server shutdown. The library eventually unloaded when the MobiLink server executable exited and no bad side effects where observed as a result, but this condition is now fixed.
655599 It was not possible to drag and drop the second operators in the Add Resource page. This has been fixed.
655607 The text in the Favorites sidebar could have disappeared if the mouse was moved over it. This has been fixed.
655749 Execution of an INSERT ... ON EXISTING SKIP statement did not report the correct number of inserted and updated rows using @@rowcount and sqlcount. This has been fixed
655780 The method MLResultSet.getBigDecimal(L/java/lang/String;) unnecessarily threw a 'method not supported' exception. This has been fixed.
655810 The MobiLink client was not freeing some memory when it shrank its cache. This would have caused its memory usage to increase over time. This memory leak has now been fixed.
655880 Second and subsequent '%' characters were not being handled properly in LIKE clauses. This was corrected.
655939 The MobiLink client may have crashed while attempting to grow its dynamic cache if a memory allocation failed. This has been fixed.
655945 On the database Fragmentation tab, the shortcuts for Zoom In (Ctrl++) and Zoom Out (Ctrl+-) did not work with the numeric keypad. This has been fixed.
655953 Several memory leaks have been fixed in the MobiLink client. These leaks would primarily affect applications using the dbmlsync API.
655955 Several memory leaks have been fixed in the MobiLink Client.
655956 If a server was handling a large number of requests, and a large number of those requests made external environment calls that resulted in server side calls coming back into the server and those server side calls were similar in nature, then there was a chance that the server would have crashed when one or more of the connections making external environment calls closed. This problem has now been fixed.
655969 Accessing values of LONG BINARY STORE AS FILE on BlackBerry devices would have failed if the filename started with "file://", but was not all lowercase. This has been fixed. The string "file://" is now case insensitive as it should be.

Note that the root value is case sensitive (i.e. "FiLe:///SDCard/me.blob" is ok but "FiLe:///sdcard/me.blob" is not).

655972 The fix for Engineering case 636018 missed a case, which has now been corrected.

Description of case 636018:

Queries involving indexes containing long values could have returned incorrect results. Index corruption was possible, but not likely..

655981 Values for the ApproximateCPUTime property is never expected to decrease between calls, as it represents an estimate of accumulated CPU time for a connection. However, for connections that had accumulated approximately 1000 seconds of CPU time, the counter could have periodically receded by approximately 400 seconds.
655987 The "Apply" button on the property sheet for a Remote Task was not enabled when various changes were made. Now, the button is enabled correctly.
655989 Sybase Central would have crashed whenu attempting to open a Relay Server configuration file which was zero-length, or that contained only whitespace. This has been fixed.
656087 When connecting from Sybase Central to an UltraLite database with multi-byte characters in its file name, the database name would have appeared with mangled characters. This has been fixed.
656093 The Log Translation utility (dbtran) and SQL Remote could left temporary files undeleted after execution. This has been fixed.
656162 When building a CAB file to deploy SQL Anywhere for Windows Mobile, a start menu folder "sqlany12" would have been created, the folder name should have been "sqlany11". This has been corrected.
656264 When connected to a database that had the same character set as the OS, and a query like the following was executed:

SELECT ... FROM dirtab WHERE file_name = '...'

where dirtab was a directory access table and the file_name string literal contained non-ASCII characters, there was a chance the server would have crashed. This problem has now been fixed.

656272 The INSERT ON EXISTING SKIP statement did not report the correct number of inserted and

updated rows using @@rowcount and sqlcount. This has now been corrected.

656291 If a Destination Alias defined in a Server Store was deleted, the alias was still shown in Sybase Central until the QAnywhere server completed the deletion. That could have taken up to a minute, or could never have happened if the QAnywhere server was not running. If deleting the alias was tried a second time, an obscure error message would have been displayed saying that the alias could not be deleted. Now, the Destination Alias is removed from Sybase Central as soon as the user deletes it, the same as in earlier versions of Sybase Central.
656454 When connected to a database that contained one or more publications, and the property sheet for a Publication was opened and an Article was selected in the "Subscribe by restriction" tab, the Editor pane at the bottom of the tab would have been disabled except when the 'expression' radio button was checked. When the Editor pane was disabled it was still possible to right click on it to reveal a pop-up menu that allowed for search and replace in the box. The menu is now disabled when the Edit pane is disabled.
656481 An application using the ADO .Net provider, and calling the method SAConnection(), could not have successfully connected to an IQ 12.7 server. A run-time error (iAnywhere.Data.SQLAnywhere.SAException) would have occurred when the provider tried to parse the server version string. This problem has been resolved.
656645 Dates shown in the Graph widget were localized but not in the correct order (they showed "MM DD" instead of "DD MM"). This has been fixed.
656650 The system procedure sa_db_list() did not validate its database id parameter if the value was a positive integer. This would have resulted in a single row result set containing the value provided. Now, if the value is not a valid database id, the procedure will return an empty result set.
656660 During a Relay Server outage, the SQL Anywhere Monitor did not display the the "Unavailable since" time, but cleared the "Up since" time only. A farm outage alert was also not raised. Only a sustained outage alert was raised after the threshold time elapsed. When the Relay Server came back up again, data collection did not resume and the "Up since" time was not updated. These problems have now been fixed.
656671 MobiLink does not allow column-based conflict detection for tables that have large (eg. BLOB) columns, but that option could have been selected for such a table in a Synchronization Model in the Table Mapping editor. An error would not have been reported until synchronizing after deploying the model. This has been fixed so that a table mapping error will now occur in the Table Mapping editor.
656680 The Interactive SQL utility could have become unresponsive when executing a statement which returned a result set if the entire result set cannot be returned due to a row lock. This has been fixed.
656691 If a query was rewritten by the optimizer to use a materialized view, the query would incorrectly have returned zero rows if a spatial predicate was applied to the rows originating from the view. This has been fixed.
656716 The Relay Server could have leaked heap memory under the following conditions:

- On the response to the first HTTP request in the session, or specifically, anytime a cookie was set, if the response was long and came in small packets.

- A small number of bytes were leaked on Upchannel and Dnchannel creation.

This has been fixed.

656828 Adding the CHECK IMMEDIATE REFRESH clause to a CREATE MATERIALIZE VIEW statement would have caused the server to crash. This has been fixed.
656839 If an INSERT or UPDATE statement affecting the value of a spatial column was canceled, or a run-time error was encountered during execution, there was a possibility that the server would have failed assertion 112701: "Failed to convert geometry to EWKB for the redo log -- transaction rolled back [-301] ['40W01']". This has been fixed.
656844 ULPod may have caused AvantGo clients to crash when calling the method TableAGDBSet getTableAGDBSet. This has been fixed.
656847 If a derived table was joined with the rest of the query using a Join Nested Loops operator, the performance of the query may have suffered when the derived table had to be computed many times due to many rows generated by the left hand side of the Join Nested Loops. The optimizer was choosing such a plan if the estimated number of rows of the left hand side was very small. If this estimation was wrong (e.g., the optimizer estimates one row for the left hand side but in reality the left hand side produces 1,000 rows), the derived table was computed many, many times during execution. This has been fixed so that the optimizer considers only Join Hash or Join Sort Merge operators for the derived tables if it is correct to do so.
656863 If a synchronization model had script errors that were fixed without opening the Events editor or saving the model, attempting to deploy the model would have erroneously failed because of a script error. This has been fixed.
656897 Attempting to execute a SQL statement that was made up only of full-width space characters (U+3000, the "Ideographic Space") would have caused the Interactive SQL utility to crash. This has been fixed.
656998 Remote queries with many aliases in grouped derived tables may have taken a long time to execute. This has been fixed.
657026 The MobiLInk server would immediately refuse to startup, if it could not make any connections to the consolidated database, even when it was running as a Windows service.

This behaviour has changed so that the MobiLink server will retry to make connections, when it is running as a Windows services. The retries are once a minutes for ten minutes. If it still cannot make a connection after that, it will refuse to startup.

657068 In the MobiLink Server Log File Viewer, selecting a synchronization could have resulted in the window becoming unresponsive if the synchronization contained hundreds of thousands of messages. This has been fixed.

Also, it was noticed that synchronizations were not initially listed in chronological order if the log file contained output for more than one run of the MobiLink Server. This has also been fixed.

657185 The MobiLink Agent for central administration of remote databases now supports a file delete command that does not fail if the file to be deleted does not exist. The existing behaviour of failing if the file to be deleted does not exist is the default.
657198 The MobiLink Replay utility (mlreplay) and mlgenreplayapi tool now log any command line options in the log. If any of the command line options are passwords, then the passwords will be replaced with a string of �*�.
657199 The 杘s <size> command line option can be used to limit the maximum size of a log file produced by the MobiLink Replay utility (mlreplay) or the mlgenreplayapi tool. When the log reaches the specified size (minimum 10 KB), it will be renamed to YYMMDDxx.rlg and a new log file is started with the original name.
657200 The MobiLink Agent for central administration of remote databases now supports two new variables for task conditions, {is_online} and {network_conn_name}.

The variable {is_online} can be used to check whether the client device is connected to a network on which the MobiLink server of the agent can be reached. Note that this variable is not equivalent to a ping of the MobiLink host machine, nor of the MobiLink server itself. The host machine may be offline and the variable will still evaluate to 1 (true). This variable evaluates to 1 if and only if the client device is connected to a network such that there is a route to the IP address of the MobiLink server. This variable is supported for agents running on Windows and Windows Mobile operating systems.

The variable {network_conn_name} evaluates to the name of the network connection that will be used by the agent for communication with its MobiLink server. This variable is only supported on Windows operating systems. The list of possible network connection names for a given Windows-based device can be obtained by going to Control Panel/Network Connections on Windows XP, or going to Control Panel/Network and Sharing Center on Windows Vista and Windows 7. Alternatively, the list of network connection names can be obtained from the information returned by the ipconfig command line utility. The network connection name for the loopback connection (destination IP address 127.0.0.1) is "Loopback interface". If there is no network connection that can be used by the agent to communicate to the MobiLink server, this variable evaluates to "?".

657201 The MobiLink Replay utility command line options 杗 <number of simulated clients> and 杝ci <simulated client information file> can now be used together as long as the number of simulated clients specified by the 杗 option is less than or equal to the number of simulated clients in the simulated client information file. If the 杝ci and 杗 options are used together, the number of simulated clients mlreplay will run will be the number specified by 杗. Allowing these two options to be used together allows one simulated client information file specifying x simulated clients to be used to replay recorded protocol with 1 to x simulated clients, where as before, it could only be used to replay recorded protocol with exactly x simulated clients.
657203 The MobiLink Agent for central administration of remote databases now supports a random delay for task execution. The motivation for this feature is to address scalability issues in a large deployment of centrally administered remote databases. If a given task sends results to the MobiLink server after execution, or causes a remote database to synchronize with the server, and it is triggered simultaneously across a large number of remotes, then setting a random delay for the task will uniformly distribute the synchronization workload for the server over a configurable period of time.

A remote task can have a "random delay interval", which is an interval N, in seconds, with which each agent generates a random number of seconds in [0, N) to delay each task execution. If the task is a scheduled task, the random delay is generated before the first task execution, and used for each execution. The task is executed at the scheduled times offset by the random delay. This ensures that the deltas of the task execution times are consistent with the schedule. It is not recommended that the random delay interval be larger than smallest delta time of a scheduled task. If the task is an "on demand" task, that is initiated by the server, the random delay is generated and used to delay the execution each time the task is initiated. If the task is a "run on receipt" task, the random delay is generated and used to delay the execution at the first and only time the task is executed.

657204 A new option has been added to control interpolation of ST_CircularString geometries called st_geometry_interpolation. It takes a set of key=value pairs as: key1=value1;key2=value2;....

Valid keys include:

relative-tolerance-percent=<double>

absolute-tolerance=<double>

The value for relative-tolerance-percent specifies the maximum variation (in percent) in the distance from the centre point of the ST_CircularString segment to the interpolated ST_LineString segment, relative to the radius of the ST_CircularString segment. This value defaults to 0.3, which gives 40 points in a complete circle. Its minimum value is 0, meaning the absolute-tolerance setting is always used.

The value for absolute-tolerance specifies the maximum absolute variation (in linear units) in the distance from the centre point of the ST_CircularString segment to the interpolated ST_LineString segment. This value defaults to the tolerance specified by the SRID. Its minimum value is also the tolerance specified by the SRID.

If neither key is specified, the defaults are used. If only one key is specified, the other one is set to its minimum value. If both keys are specified, the minimum number of points will be produced such that both restrictions are satisfied.

Regardless of the setting, there will be at least 3 points per curve segment. Additional points may be added to ensure the ST_Envelope of the ST_LineString is the same as that of the original ST_CircularString. Furthermore, no two consecutive points on the interpolated ST_LineString will be within tolerance of each other.

657208 The MobiLink server now requires the ASE ODBC driver from Sybase SDK 15.5 ESD #4, which contains a few bug fixes, especially for the ASE cluster edition. The ASE ODBC driver from Sybase 15.0 SDK ESD #16 that was recommended for 12.0.0 GA is no longer recommended.
657210 The MobiLink server now supports two new named system parameters, 'new_username' and 'new_remote_id'. They are available in the authenticate_user and begin_synchronization connection scripts, and the begin_synchronization table script for every sync table. The format of these two named parameter is the same as that for all other named system parameters, that is:

{ml s.new_username} and {ml s.new_remote_id}

These new named parameters are not available through question marks (?) in any MobiLink server events.

The values of the s.new_username and s.new_remote_id parameters would be the MobiLink user name (used for user authentication) and the remote ID, respectively, if the user name and remote ID are new in the consolidated database (they are not in the ml_user and ml_database tables). Otherwise, their values will be NULL: more precisely, the s.new_username will be NULL if the MobiLink user name is already in the ml_user table, and the s.new_remote_id will be NULL if the remote_id is already in the ml_database table.

657228 A new system procedure has been added, st_geometry_load_shapefile, which will make it easier to load ESRI shape files. The procedure creates a table and loads data from an ESRI shape file into the new table. The created table's columns are based on those in the shape file and shape file attributes. This system procedure is for use with the spatial feature.

Syntax

st_geometry_load_shapefile( shp_filename

, srid

, table_name

[, table_owner [, shp_encoding ] ] )

Arguments

- shp_filename A VARCHAR(512) parameter that identifies the location of the ESRI shape file. The file name must have the extension .shp and must have an associated .shx and .dbf file with the same base name located in the same directory. The path is relative to the database server, not the client application.

- srid An INTEGER parameter that identifies the SRID for the geometries in the shape file.

- table_name A VARCHAR(128) parameter the specifies the name of the created table.

- table_owner An optional VARCHAR(128) parameter the specifies the owner of the created table. The default owner is the current user.

- shp_encoding An optional VARCHAR(50) parameter that identifies the encoding to use when reading the shape file. The default encoding is ISO-8859-1.

Remarks

The st_geometry_load_shapefile system procedure first creates the table "table_owner"."table_name" using the column names a types from the ESRI shape file. Then the procedure loads the data from the shape file into the new table. If loading the data from the shape file fails, the created table remains.

This procedures makes use of the sa_describe_shapefile system procedure and the LOAD TABLE ... FORMAT SHAPEFILE statement.

Permissions

RESOURCE authority is required.

If the -gl option has been set to DBA, DBA authority is required.

If the -gl option has been set to NONE, loading the data will fail.

Side effects

Automatic commit

See also

sa_describe_shapefile

LOAD TABLE

Admin tools load shapefile wizard

Example

The following examples creates the table "esri_load" with spatial reference system 1000004326 and loads the data from c:\esri\shapefile.shp:

call st_geometry_load_shapefile( 'c:\\esri\\shapefile.shp', 1000004326, 'esri_load' );

657284 The MobiLink Server log file viewer in Sybase Central might not have listed all synchronizations in a given log file separately if the log file contained messages from more than one run of the MobiLink Server. This has been fixed.
657297 The MobiLink Replay utility can now repeatedly replay recorded protocol. A new option, -rep <num_repetitions>, has been added to specify how many times each simulated client should replay the recorded protocol. Each repetition can be customized if a replay DLL/shared object is used. The following callbacks are called per repetition:

� GetUploadTransaction (this callback may be called several times based on how many syncs and upload transactions appear in the recorded protocol file being replayed)

� GetDownloadApplyTime

� ReportEndOfReplay

� DelayStartOfReplay

The purpose of the above callbacks has not changed with the addition of this new feature. The differences are the repetitionNum and numRepetitions parameters will no longer always be 1 and GetUploadTransaction may now be called concurrently.

Another new option has been added as well, -ls, which tells the Replay utility to log statistics about each simulated client. In particular, using the 杔s option will log the total running time, the total time spent replaying, and the total number of repetitions completed successfully, failed, or skipped for each simulated client. The Replay utility will still log a summary just before exiting containing the total number of repetitions completed successfully, failed, or skipped, as well as the total time spent replaying and the total running time, even when the 杔s option is used.

657301 Synchronization models using SQL Anywhere, Sybase IQ, IBM DB2 LUW and MySQL consolidated databases can now use timestamp-based downloads without having to use triggers to maintain timestamp columns. Instead of triggers, column default values can be used to automatically update the timestamp column in a row when the row is inserted or updated. This can improve performance, since such column defaults are less costly than triggers in the consolidated database.

A new "Use column default instead of a trigger" option has been added to both the Timestamp Download Options page of the Create Synchronization Model Wizard and the Download Type tab of the Table Mapping Editor.

This feature is required for Sybase IQ and is now the default option for SQL Anywhere. DB2 and MySQL only allow one automatic timestamp column per table, so the default for those consolidated database types is to use triggers.

The following column defaults are used:

- For SQL Anywhere and Sybase IQ: DEFAULT TIMESTAMP

- For DB2: GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP

- For MySQL: DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Note that a trigger must be used if a shadow table is used to hold the timestamp column.

657306 Synchronization Models can now be created with Sybase IQ consolidated databases. For IQ tables, table mappings are download-only by default. If the table mapping for an IQ table is changed to bi-directional or upload-only, a warning is given to ensure that uploads are

serialized. The requirement for serializing uploads with Sybase IQ is described in the following topic:

MobiLink - Server Administration

� Using MobiLink server technology

� MobiLink consolidated databases

� Sybase IQ consolidated database

657311 The spatial predicate ST_WithinDistanceFilter is now supported for geometries in round earth spatial reference systems. In addition, predicates involving ST_WithinDistance or ST_Distance will now make use of a spatial index if one exists.
657314 Several new methods have been added to the UL.Net API to support asynchronous synchronization.

public delegate void ULSyncProgressedDlg( IAsyncResult result, ULSyncProgressData data )

This method is invoked during synchronization to provide progress information. Unlike the SyncProgressed method of the ULSyncProgressListener interface, the synchronization is not being held up during calls to this method and it is safe to do GUI work or make UL.NET API calls.

public IAsyncResult ULConnection.BeginSynchronize()

Creates a new thread to do a synchronization and then returns immediately.

public IAsyncResult ULConnection.BeginSynchronize( Control control, ULSyncProgressedDlg dlg, object state )

Creates a new thread to do a synchronization and then returns immediately. The ULSyncProgressedDlg method is invoked on the provided Control object regularly during sync to provide progress information.

public void ULConnection.CancelSynchronize( IAsyncResult asyncResult )

Tells the synchronization thread to terminate and then returns immediately.

public void ULConnection.EndSynchronize( IAsyncResult asyncResult )

Blocks until an asynchronously launched synchronization terminates. A ULException is thrown if the sync failed.

public bool ULSyncProgressData.IsFinalSyncProgress

This property is true if this is the final sync progress message for a sync.

657317 Tables in UltraLiteJ can now be marked as download-only. Changes to the table on the consolidated database are downloaded during synchronizations, but local changes are not sent up to MobiLink. Tables are set to download-only by specifying "SYNCHRONIZE DOWNLOAD" for the sync constraint clause of the "CREATE TABLE" and "ALTER TABLE" SQL statements. As with other tables that are synchronized, client-side uncommitted changes may result in download conflicts. XML format for unloaded databases now includes the sync="download" attribute on tables.

Note, opening a database with 12.0.1 will upgrade the database so that it is no longer compatible with 12.0.0.

657324 Installations created by the Deployment wizard were to be missing the following files from the assembly\v2\ directory:

iAnywhere.Mobilink.Client.dll

iAnywhere.QAnywhere.Client.dll

iAnywhere.QAnywhere.Resources.dll

iAnywhere.QAnywhere.ws.dll

These files were being installed in the Global Assembly Cache (GAC), but an additional copy was not also put in the assembly\v2 directory. This has been corrected so that these files are now installed in both locations.

657341 Substantial performance improvements have been made for the following spatial operations:

- Loading of (multi)polygons belonging to round earth spatial reference systems.

- Loading of complex (multi)polygons (i.e., polygons defined by many rings or rings containing many points)

- Spatial set operations (e.g., ST_Union, ST_Intersection, etc.) applied to complex geometries

- Spatial predicates (e.g., ST_Contains, ST_Intersects, etc.) where one of the geometries is complex

- Spatial predicates where one of the geometries is a point

657343 The MobiLink Server can now automatically adjust the number of database worker threads based on load, with the goal of maximizing throughput. The existing -w option has been slightly changed, and the -wm option has been added, as follows:

-w <count> set the initial number of concurrent database worker threads (up to -wm)

-wm <count> set the maximum number of concurrent database worker threads

Notes:

- The -w option has been changed to be the _initial_ number of concurrent database worker threads

- The -wm option now defaults to -w, ie. no automatic adjustment will occur when -wm is unset. In other words, the automatic adjustment is triggered by the presence of the -wm option

- The number of database worker threads is now automatically adjustable anywhere between the initial (-w) value and the -wm value

- The -wu value is not automatically adjusted, and its meaning remains basically the same, with one important difference: If not specified, uploads may be applied on any or all database worker threads (which is now a variable number). If specified, uploads may only be applied concurrently on the given number of database worker threads. So by default, when feature attempts to ramp up the number of database worker threads in an attempt to increase throughput, contention may increase in the short term until it is detected and the thread-count is eventually decreased.

- The automatic adjustment means that some customers may find optimal throughput only when -wu is set explicitly, because leaving it unset causes download throughput to be artificially limited by the contention of the uploads. Setting -wu is most likely to be required in high-load environments where uploads are constantly intermixed with download-only synchronizations.

- If contention in the consolidated is the cause of throughput degradation, then this new feature will reduce the number of worker threads REGARDLESS of the cause of the contention (eg. other syncs vs. a contentious batch process outside of syncs).

- Each ML server in a farm makes thread-count decisions independently. Over time, on average, each server in an ML farm should end up at the same thread-count number assuming a uniform load distributed evenly across the farm.

657397 When the consolidated database was running on an Oracle server, the MobiLink server could have displayed the error: 'ORA-00001: unique constraint ... violated' and then refused further synchronization requests. This would have occurred when the MobiLink server schema in the consolidated database was upgraded from a version earlier than 11.0.0, and the synchronization request was for a new MobiLink user and/or MobiLink remote database.

This problem has been fixed in the upgrade scripts for Oracle.

The following steps can be used to correct the problem if the Oracle consolidated database had already been upgraded with the old upgrade scripts:

1) Shut down all MobiLink servers;

2) Execute the SQL file against the Oracle consolidated database with the following command line:

sqlplus LoginID/Password@TNSServerName @%SQLANY12%\MobiLink\Upgrade\fix_ora.sql

Replace the LoginID, Password, and TNSServerName in the above command line with your own login information.

657409 Predicates of the form 'T.X IS NOT NULL' are now treated as sargable predicates by the SQL Anywhere Optimizer. Hence, this type of predicates can be used for partial index scans interpreted as "T.X > NULL".

For example:

create index idx1 on T(C1, C2);

select * from T where T.C1 = 10 and T.C2 IS NOT NULL

The query Q may have, depending on the selectivity of the predicates "T.C1 = 10" and "T.C2 IS NOT NULL", the following plan:

T<idx1>

where the partial index scan on <idx1> is set as follows:

idx1:

c1 = 10

NULL < c2

657410 One of the conditions for a query to be considered for bypassing the optimizer was to have no computed columns defined for the base table referenced in the FROM clause. This restriction has been removed. Common sub-expression elimination process using computed columns is done for bypassed queries similar to the queries using the Optimizer.
657411 When adding table mappings to a Synchronization Model in the Create New Table Mappings window, the option to add corresponding tables to the remote schema is now selected by default.
657413 Improvements to the MobiLink Server required some changes to system objects in the consolidated database. Upgrade scripts have been provided for every consolidated database type MobiLink supports. The upgrade script file is named with the following format:

upgrade_x.sql

where x can be sa, ase, mss, ora, db2, and mys; and represent upgrade scripts for SQL Anywhere, Sybase ASE, Microsoft SQL Sever, Oracle, DB2, and MySQL, respectively. These upgrade script files can be found in MobiLink\Upgrade\x.y.z of the SQL Anywhere installation, where x.y.z stands for the earlier version that is currently in use. For instance, when upgrading from MobiLink version 9.0.2 to version 12.0.1 with an Oracle consolidated database, the upgrade script needed is upgrade_ora.sql that can be found in the directory, MobiLink\Upgrade\9.0.2 in the SQLAnywhere 12.0.1 installation.

657415 Performance of index maintenance on IMMEDIATE REFRESH text indexes has been substantially improved. The improvement observed will depend on the particular workload, as well as the

document and text index content. Text indexes indexing long documents will benefit the most from this improvement.

657416 The USING clause of a CREATE SERVER statement can now contain "{varname}". Similarly, the AT clause for CREATE EXISTING and CREATE PROCEDURE statements can also contain "{varname}". When a connection to the remote server is established, or when the proxy table or proxy procedure is utilized, the "{varname}" in the USING or AT clause will get replaced with the contents of the connection variable named "varname". Note that the connection variable "varname" must be a CHAR, VARCHAR or LONG VARCHAR variable. All other datatypes will be rejected. Utilizing the "{varname}" feature will allow for creating dynamic remote data access servers, proxy tables and proxy procedures.

The following example gives a better idea of how this new feature can be used. Note that this example uses a directory access server for demonstration but this new feature is not at all restricted to the type of remote data access server.

SSuppose a dba has a database that is sometimes started on machine A with the server name server1 and at other times the database is started on machine B with the server name server2. Now suppose the dba wants to set up a directory access server that points to the local drive d:\users on machine B which is also the network driver w:\users on machine A.

In addition, the dba wants to set up a single proxy table that all users can use to get the listing of their own directory located at users\userM. With the addition of variables in the USING and AT clause, the dba can now accomplish everything needed with a single directory access server and a single proxy table as follows:

First, with the database running on machine B connect as dba and execute the following in DBISQL

-- define the directory access server with variables in the using clause

-- the two variables in this example are for the root of the directory access server and the subdirectory level

create server dir class 'directory' using 'root={@directory}\\users;subdirs={@subdirs}';

-- next create explicit extern logins for each user that will be allowed to use the directory access server

create externlogin dba to dir;

create externlogin user1 to dir;

create externlogin user2 to dir;

...

create externlogin userM to dir;

-- now use one of the user accounts to create the single proxy table that all users will use

create variable @directory long varchar;

set @directory = 'd:';

create variable @subdirs varchar(10);

set @subdirs = '7';

create variable @curuser varchar(128);

set @curuser = 'user1';

create variable @server varchar(128);

set @server = 'dir';

-- this will now create a proxy table that points to @directory\users\@curuser on directory access server @server

create existing table dbo.userdir at '{@server};;;{@curuser}';

-- we no longer need the variables so clean them up

drop variable @curuser;

drop variable @subdirs;

drop variable @directory;

-- we also no longer need an extern login mapping for dba

drop externlogin dba to dir;

-- now create a procedure that all users will use to view the contents of their individual user directory

create procedure dbo.listmydir()

begin

declare @directory long varchar;

declare @subdirs varchar(10);

declare @server varchar(128);

declare @curuser varchar(128);

-- for this example we always use the "dir' remote data access server

set @server = 'dir';

-- the root directory is based on the SQL Anywhere server the user is connect to

set @directory = if property('name') = 'server1' then 'w:' else 'd:' endif;

-- the subdir limit is based on the connected user

set @curuser = user_name();

-- all users get a subdir limit of 7 except user2 who gets a limit of 1

set @subdirs = convert( varchar(10), if @curuser = 'user2' then 1 else 7 endif);

-- now we are all set to go

-- with all the variables set above the proxy table dbo.userdir now points to @directory\@curuser and has a subdir limit of @subdirs

select * from dbo.userdir;

end

grant execute on dbo.listmydir to public;

If userN where userN is not in (user1, user2, ... userM) attempts to use dbo.listmydir(), the select statement will fail due to the fact that userN does not have an extern login mapping for directory access server "dir".

If, on the other hand, users userI and userJ where userI and userJ are both in (user1, user2, ... userM) attempt to use dbo.listmydir(), then userI will get a listing of his/her own directory located at users\userI and userJ will get a listing of his/her own directory located at users\userJ even though both query the exact same dbo.userdir proxy table. In addition, if the database now moves from machine B to machine A, then all will continue to work since the @directory variable in the USING clause will now get set to "w:\users" instead of "d:\users".

657417 The 'TOP limit START AT startat' and 'LIMIT limit OFFSET offset' constructs now support simple arithmetic expressions for 'limit', 'offset', 'startat' arguments; and TOP supports the 'ALL' limit indicating that all rows are to be returned after the specified 'startat'; and the maximum value for (limit + offset) is now 9223372036854775807 = 2^64-1

The new grammar is as follows:

TOP range_expression range_offset

TOP T_ALL range_offset

LIMIT range_expression [OFFSET range_expression]

range_expression:

integer_or_var

| '(' simple_expression ')'

;

simple_expression:

integer_or_var

| simple_expression '+' simple_expression

| simple_expression '-' simple_expression

| simple_expression '*' simple_expression

| '(' simple_expression ')'

;

range_offset: /* empty */

| T_START T_AT range_expression

657423 The first page of the Deploy Synchronization Model wizard now has an option when deploying to a remote database to initialize the wizard with settings appropriate for creating remote tasks for central administration of remote databases. This option is selected by default.

When the "Initialize with settings for central administration of remote databases" option is selected, the defaults are changed for the following deployment settings:

- On the New SQL Anywhere Remote Database page, the "Create a remote SQL Anywhere database" option is not selected.

- On the New UltraLite Remote Database page, the "Create a remote UltraLite database" option is not selected.

- On the Existing Remote Database page, the "Connect to the remote database to directly apply the changes" option is not selected.

- On the MobiLink User and Synchronization Profile page (formerly MobiLink User or MobiLink User and Subscription) the following are changed:

- The user name is set to {ml_username}.

- The password is set to {ml_password}.

- The "Register this user in the consolidated database for MobiLink authentication" option is not selected.

With this option selected, deployment with create a remote database SQL file that can be used in a remote task. The {ml_username} and {ml_password} macro values are replaced with the MobiLink user and password being used by the MobiLink Agent when the SQL is executed on the remote database.

657427 On Windows systems, the behavior when clicking Help in SQL Anywhere ODBC administrator dialogs has been changed so that

. the help topics are displayed using the master help file sqlanywhere_[LL]12.chm when full HTMLHelp documentation is installed, or

. if sqlanywhere_[LL]12.chm is not found, the help topics are displayed using context sensitive help file sacshelp12.chm, or

. if sacshelp12.chm is also not found, the help topics are displayed in DocCommentXchange with system's default internet browser

Please note that before this change, the Help buttons used dbco[LL]12.chm, which was installed in the bin32 folder by the main software installer. Now dbco[LL]12.chm is longer be provided.

[LL] is the language code of the help files.

657445 A new function GetParameterID has been added to the programming interface for C and C++ programming. The method returns the base-one ordinal for a named host variable in a SQL statement. The ordinal may be subsequently used to set the value of a host variable.
657448 The aggregated time increment used to calculate the following metrics were not divided by the request count increment before plotting to the graphs:

"Average Request time"

"Average Backend server processing time"

"Average Response time"

"Average Request Completion time"

The problem has been fixed.

657459 The SQL Anywhere OLE DB provider now supports the DBTYPE_DBTIMESTAMPOFFSET data type. DBTYPE_DBTIMESTAMPOFFSET (146) is an OLE DB type that supports the TIMESTAMP WITH TIME ZONE (or DATETIMEOFFSET) data type. Support for this data type facilitates transfer of data tables between SQL Anywhere databases and other database management systems (include SQL Anywhere).
657471 The PHP external environment and the PHP driver now support PHP versions 5.3.3, 5.3.4, and 5.3.5.
657518 When deploying a Synchronization Model to a remote database, a synchronization profile is created to hold several deployment options. For a SQL Anywhere remote database, the created synchronization profile contains the subscription name and the MobiLink password. For an UltraLite remote database, the synchronization profile contains the stream type and stream options, the MobiLink user name and password, the publication, and the script version.

The Deployment Wizard's MobiLink User and Subscription page (for SQL Anywhere databases) and MobiLink User page (for UltraLite remote databases) have been merged into the MobiLink User and Synchronization Profile page, which has an option to specify the synchronization profile name. For SQL Anywhere remote databases, the same name is used for the synchronization subscription. The default name combines the publication name and MobiLink user name, since the profile is linked to the publication and user. It is automatically updated to be of the form <publication name>_<MobiLink user name> when the mobilink user name is changed, but is uncoupled when it is directly edited. The deployment option to name the synchronization profile replaces the option to name the subscription for a SQL Anywhere remote database that was added in version 12.0.0. This feature removes the need to manually create a synchronization profile after deploying a synchronization model to use with central administration of remote databases.

657519 The MobiLink collector for the SA Monitor now supports an additional metric: "Is Consolidated Available?". This value will be true if the MobiLink server can connect to the consolidated database. If the consolidated database becomes unavailable, a "Consolidated database unavailable" alert will be raised. Also, the "Bytes Read Rate" and "Bytes Written Rate" have been renamed to "TCP Bytes Read Rate" and "TCP Bytes Written Rate".
657520 In very rare cases, the server asserts with assertion error 102300 "File associated with given page id is invalid or not open" if request level debugging is turned on and includes plan logging and there are schema changes around. This has been fixed. To work around the problem plan caching can be turned off (option Max_plans_cached = 0) or plan logging can be turned off (switch -zr without "plan" and "all").
657526 A new stored procedure called sp_forward_to_remote_server( IN @server_name varchar(128), IN @sql long varchar ) has been added. This stored procedure allows an application to execute a SQL statement on a remote server and retrieve any result sets generated by the statement. It should be noted that the SQL statement gets sent verbatim to the remote server; hence, it is not necessary for the SQL statement to be parseable by SQL Anywhere. This new stored procedure is in addition to the already existing FORWARD TO statement; but unlike the FORWARD TO statement, this new stored procedure can be used within procedures; however, since the schema of the remote result sets is completely arbitrary, this stored procedure cannot be used within the FROM clause of a SELECT statement. You can, nevertheless, declare a cursor within a stored procedure on this stored procedure and fetch the remote result sets that way. Note that if the SQL statement returns multiple result sets, then this stored procedure will return each remote result set in turn.

The server must be defined with the CREATE SERVER statement to use this system procedure. TThe arguments are as follows:

@server_name Use this CHAR(128) parameter to specify the server the SQL statement will be executed on.

@sql Use this LONG VARCHAR parameter to specify the SQL statement to execute on the remote server.

Note that an ALTER DATABASE UPGRADE is required to get the new stored procedure.

Permissions: None

Side effects: There are no local side effects to executing this stored procedure; however, since the SQL statement that gets executed on the remote is completely arbitrary, there may be side effects on the remote server.

Example:

The following very simple example uses the sp_forward_to_remote_server() stored procedure and a local function to determine the number of tables that a remote SQL Anywhere 12 database has.

-- create the remote data access server

create server rem class 'saodbc' using 'driver=SQL Anywhere 12;...';

-- assume extern logins are not needed

-- create the local function that in turn calls sp_forward_to_remote_server

create function fetch_num_remote_tables(in server char(128) ) returns int

begin

declare num_tables int;

declare curs cursor for call sp_forward_to_remote_server( server, 'select count(*) from sys.systable' );

open curs;

fetch next curs into num_tables;

close curs;

return num_tables;

end

-- fetch the number of tables from the remote server

select fetch_num_remote_tables( 'rem' )

657528 UltraLite will now grow its database file cache when warranted in response to database operations and as available memory allows. The application can also resize the cache explicitly (typically in cases where the application is requested to reduce its memory usage). The 'cache_size' connection parameter is now only the initial size. Since the cache will grow on demand, the default value for 'cache_size' is smaller than it was previously - in particular, the runtime will no longer try to cache the entire file initially.

New connection parameters to control the cache size limits are:

'cache_min_size' - The minimum cache size, in bytes, with k and m suffixes as with 'cache_size'.

'cache_max_size' - The maximum cache size, in bytes, with k and m suffixes as with 'cache_size'.

There are platform and memory size-specific defaults for these values. The default maximum size is limited to 20Mb for devices and 50Mb for desktops. Normally, the application should not have to specify any cache-size parameters.

The new database option 'cache_allocation' is used to explicitly resize the cache. The value is a percentage of the minimum-to-maximum range. A value of zero means the minimum size, and a value of 100 means the maximum size. The 'cache_allocation' property returns the current cache size as a percentage value.

657530 The restrictions on the type of argument datatypes that are allowed in remote procedure calls has now been relaxed considerably. In particular, a remote procedure call can now contain IN parameters of type long varchar, long nvarchar and long binary. In addition, varchar, nvarchar and binary parameters are no longer restricted to 255 bytes. As a result, when defining and using a proxy procedure, you can now use any datatype for IN arguments. However, long varchar, long nvarchar, long binary, numeric and decimal datatypes are still not allowed for OUT parameters, INOUT parameters or RETURN values.
657536 This change introduces a new performance metric to track the time connections have been connected, adds user-defined performance counters, and changes the scope of some existing performance counters so that they are now available at the connection, database, and server level. These changes improve the ability to monitor a database server running more than one database.

Property for Connection Time

A new connection property, ConnectedTime, returns the total length of time in seconds that a connection has been connected. There are also database and server-level versions of the same name; these return the total time that all connections to the database/server have been connected. Two notes of caution for the database and server versions:

The database and server level properties are updated only when a request completes for the connection or the connection disconnects. The database/server properties can therefore lag behind for connections that are idle or busy executing for a long time in the server. The property is updated only at the end of the operation to reduce the overhead needed to maintain the property.

The database and server level properties include time accrued by any connection, and this includes database events and background server connections (such as the cleaner)

User-Defined Counters

The SA performance counter mechanisms provides a way to monitor statistics in a running server. In some cases, a database application has similar statistics that would be useful to measure when monitoring a performance issue. To that end, new user-defined counters are defined. These are not set by the server, and must be set or incremented explicitly by calling one of two new functions. The counters can be read using any of the methods supported for performance counters (property functions, dbo.sa_performance_statistics(), performance monitor).

There are two classes of counter, RAW and RATE. The RAW counters are displayed as an absolute value in the performance monitor, while RATE counters are shown by measuring the change of the counter during a measurement interval. For example, a RAW counter would be appropriate for showing the current number of keys remaining in a key pool; this value would fluctuate up and down over time. Alternatively, a RATE counter would be appropriate for showing how quickly keys are being used from a key pool. The counter would increase monotonically over time as keys are used, and the performance monitor would show the rate that keys are used per second.

The new counters are named UserDefinedCounterRaw01, ..., UserDefinedCounterRaw05 and UserDefinedCounterRate01,...,UserDefinedCounterRate05. These counters are recorded at the scope of connection / database / server.

Two new functions are provided to increment these values or set them to a new absolute value:

create function dbo.sa_user_defined_counter_add(

in counter_name varchar(128),

in delta bigint default 1,

in apply_to_con int default 1,

in apply_to_db int default 1,

in apply_to_server int default 1 )

returns int

internal name 'sa_user_defined_counter_add'

The sa_user_defined_counter_add() system procedure adjusts a user-defined counter by an amount (delta). The counter_name parameter is the text name of the counter to adjust. By default, the counter is adjusted by 1 at the connection, database, and server scopes. The parameters apply_to_con, apply_to_db, and apply_to_server can be either 0 (do not apply) or 1 (do apply) to control the scopes where the delta is applied. To accomodate future expansion, the delta parameter is declared as a bigint. However, values outside of the range of an int generate an error. The function returns 1 if the delta was applied, otherwise 0.

create function dbo.sa_user_defined_counter_set(

in counter_name varchar(128),

in value bigint,

in apply_to_con int default 1,

in apply_to_db int default 0,

in apply_to_server int default 0 )

returns int

internal name 'sa_user_defined_counter_set'

The sa_user_defined_counter_set() system procedure changes a user-defined counter to a new value. The counter_name parameter is the text name of the counter to adjust. By default, the counter is set to the specified value at the connection, database, and server scopes. The parameters apply_to_con, apply_to_db, and apply_to_server can be either 0 (do not apply) or 1 (do apply) to control the scopes where the value is applied. To accomodate future expansion, the value parameter is declared as a bigint. However, values outside of the range of an int generate an error. The function returns 1 if the value was applied, otherwise 0.

Concurrent access to counters are applied atomically so it is safe to increment a counter from multiple concurrent requests or to set a counter from concurrent requests.

New scope for properties:

The following properties were previously maintained for a single connection only. In version 12.0.1, these properties are accumulate to the database and engine level, and they can now be retrieved using database_property() and property():

ApproximateCPUTime -- approximation of CPU time spent by connection/db/server

ReqCountXXX -- count of times connection entered state XXX={Unscheduled,Active,BlockIO,BlockLock,BlockContention}

ReqTimeXXX -- total time connection spent in state XXX={Unscheduled,Active,BlockIO,BlockLock,BlockContention}

The accumulation for these properties is done at the end of a request; this means that executing requests don't update the database/server properties until the request completes.

New scope for counters:

Perviously, some performance counters were defined at scope "con" or "con/eng". In version 12.0.1., these are instead defined as "con/db/eng" so that the property can be attributed to a particular database when the server is running more than one database.

Bytes_Received

Bytes_Received_Uncomp

Bytes_Sent

Bytes_Sent_Uncomp

Carver_Heap_Pages

Client_Stmt_Cache_Hits

Client_Stmt_Cache_Misses

Client_Stmt_Track_Mem

Client_Stmt_Tracked

Commit

Cursor

Heaps_Carver

Heaps_Locked

Heaps_Query

Heaps_Relocatable

Open_Cursor

Packets_Received

Packets_Received_Uncomp

Packets_Sent

Packets_Sent_Uncomp

Query_Heap_Pages

Query_Mem_Active_Curr

Query_Mem_Grant_Failed

Query_Mem_Grant_Granted

Query_Mem_Grant_Requested

Query_Mem_Grant_Waited

Query_Mem_Grant_Waiting

Requests_Received

Rollback

Statement

With this change, these counters can now be retrieved using property(), db_property(), or connection_property().

657540 The documentation for UltraLite does not specify any side effects for the SET OPTION statement. In version 12.0.0 and earlier, UltraLite always commits as a side effect of setting any option (using the SET OPTION statement or SetDatabaseOption method). As of version 12.0.1, setting an option will only commit for permanent options. These are:

global_database_id

ml_remote_id

Options which are temporary or connection-based by nature do not have a commit side effect. These are:

commit_flush_timeout

commit_flush_count

isolation_level

cache_allocation

657542 The results of an Entity DAta Model query could have been non-deterministic. For example, having a GridView with the properties "AllowPaging" and "AllowSorting" set to "True", would have returned a "Result is non-deterministic" warning (SQLCODE 122). This has been fixed by adding an ORDER BY clause to the generated SQL.
657551 The SQL Anywhere plug-in's support for viewing and editing permissions has been redesigned for version 12.0.1. Permissions are now viewed and edited from tabs in the right pane of the main Sybase Central window, rather than from property sheets. In addition, the permissions editors for tables, columns and views now distinguish between permissions that were granted by different grantors.
657555 Web procedures that use HTTPS are now supported on Windows CE. Note that the CE server still does not support HTTPS as a server protocol (i.e. -xs https), this is only for secure web procedures (i.e. a procedure that consumes a web service from a remote server).
657557 HTTP and HTTPS synchronizations are now done using persistent connections by default.
657560 Dynamic multiprogramming level (MPL) network server command line options (-gna,

-gns, -gnl, and -gnh) will now generate an error if they are used on the personal server. For 12.0.0, these options were silently ignored, now for 12.0.1 using any of these options on the personal server will generate the following warning:

Warning: option X is ignored by Personal Server.

X can be one of -gna, -gnh, -gnl, or -gns

657586 If a call was made to the Java external environment, and the stored procedure had an argument of type tinyint and a NULL value was passed in for the tinyint argument, then the server would have failed the request with a NullPointerException. It should be noted that the Java VM would continue to run in this situation and the connection was still able to make subsequent Java external environment calls. This problem has now been fixed such that passing a NULL tinyint value to a Java external environment call will result in a byte with zero value being passed down to the Java method.
657621 If a server (S2) acting as mirror saw a dropped connection to the primary server (S1) after a temporary network outage, it could have attempted to become primary while S1 was still running. S2 would then have failed during startup because S1 still owned the alternate server name for the database. This error would also have caused S2 to shut down. If S1 needed to restart, it would have been unable to take ownership of the database because S2 was unavailable and the arbiter's state had been updated to indicate that S2 was the owner.

Also, when a server acting as primary (S1) accepted an inbound connection from the mirror (S2), S1 attempted to make an asynchronous outbound connection to S2 if one did not already exist. If this connection attempt failed, S2 would have failed to receive updates from S1.

These problems have now been fixed.

657712 Additional information is now saved for graphical and long plans. This additional information includes:

- Known values for expressions are now dumped in the plans. For example, a stored procedure parameter known at the optimization time is dumped as 'parm1[100]' if its name is 'parm1' and its known value is '100'.

- For long plans generated by the application profiling, extra information related to the optimization process is now dumped. For example, 'Plan [ Total Cost Estimate: 3.5657, Costed Best Plans: 1, Costed Plans: 13, Optimization Time: 0.074541, Estimated Cache Pages: 590 ]' This type of information is already present for long plans generated by calling the explanation() function.

- Information related to the cached plan of a statement is now dumped in its long plan.

- Predicates used to generate fence posts for a partial index scan are now dumped in the long plans generated by the application profiling. This type of information is already present for long plans generated by calling the explanation() function.

Also, graphical plans with statistics saved during tracing did not actually contain any statistics. This has been fixed.

657720 The following enhancements have been made to the events generated by the MobiLink client API:

1) The DBSC_Event structure now has a new integer field 'val3'. As with the other data fields in the structure, the meaning of the value in the val3 field depends on the type of event.

2) The event, DBSC_EVENTTYPE_DOWNLOAD_COMMITTED now has 2 parameters. In the DBSC_Event structure for the event, val1 contains the number of rows inserted or updated during the download. val2 contains the number of rows deleted by the download.

3) The new event, DBSC_EVENTTYPE_UPLOAD_START event has been added. The event is generated when dbmlsync begins to send the upload to the MobiLink server.

4) The new event DBSC_EVENTTYPE_UPLOAD_SENT event has been added. The event is generated when dbmlsync completes sending the upload to the MobiLink server. For synchronizations that use transactional or incremental upload (where the upload is sent as more than 1 segment) a separate UPLOAD_SENT event is generated after each segment is sent. In the DBSC_Event structure for the event, val1 contains the number of insert operations contained in upload, . val2 contains the number of update operations contained in the upload and val3 contains the number of delete operations contained in the upload.

5) The new event, DBSC_EVENTTYPE_DOWNLOAD_START event has been added. The event is generated when dbmlsync begins to process the download.

These event changes will apply to the C++ and .NET version of the API. They will also appear in the synchronize_results and synchronizae_parameters tables when the SYNCHRONIZE SQL statement is used.

All of these new events can be enabled/disabled by using the SetProperty method to set the 'enable status' property.

657721 There was a memory leak in the iAS ODBC driver for Oracle. The memory leak would have occurred when an application tried to make a connection but the ODBC driver was not able to obtain a valid database connection. This problem has now been fixed.
657748 When using the Microsoft ODBC Data Source Administrator, an attempt to create a DSN that used a FIPS Certificate may have resulted in a crash. The has been fixed.
657812 A number of read-only scale-out issues have been fixed.

1) The server could have crashed or otherwise failed in rare cases when one or more read-only scale-out children were added to a node. This could have occurred if one node was stopped or restarted.

2) If a parent node was restarted and had a lower log offset than it's child, the child could have shutdown with the message "Database server shutdown due to incompatible files for database mirroring." Restarting the child node after the parent caught up to primary would succeed. Now the child node no longer stops and the child node will start applying log changes once its parent gets to a higher log offset.

3) If a parent copy node was started with child nodes already running, a child node and possibly other nodes could have hung.

4) If a copy node was connected to it's alternate parent, and then it's alternate parent stopped, the copy node may have stopped applying updates. The copy should have connected to the primary server to receive updates but was actually not receiving updates. Note that sa_mirror_server_status may show that the node which is not receiving updates is connected, when in fact it was not. Now the copy node will connect to the primary server if neither the parent nor alternate parent servers are available.

5) An ALTER MIRROR SERVER statement that only changed the alternate parent was ignored until the server being altered was restarted. For example, if ServerC had parent ServerB:

ALTER MIRROR SERVER 'ServerC' AS COPY FROM SERVER 'ServerB' OR SERVER 'ServerA'

was ignored by ServerC until it was restarted. Now the alternate parent is effective on the server being altered once it has applied the log offset with the ALTER MIRROR SERVER statement.

6) Attempting to SET MIRROR OPTION auto_add_server to the alternate server name for the primary server incorrectly resulted in an error.

7) If read-only scale-out copy nodes had a primary server as their root node, and the primary server failed over to the mirror server, then all client connections to all copy nodes were incorrectly dropped.

657823 The fix for Engineering case 620136 did not handle the situation where there was no declared Primary Key in the primary table but there were table, or column, (not nullable) Unique Constraints that permit the addition of foreign keys. This problem has been corrected.
657826 When using the Microsoft ODBC Data Source Administrator, a crash may have resulted if an encrypted password had been specified and the "Test Connection" button was used. This has been fixed.
657869 If the MobiLink Server's memory use grew more than 4GB in less than 5 minutes, the TRACKED_MEMORY ppv value would have been incorrect. As a consequence, for all 12.0.1 platforms and non-Windows 12.0.0 platforms, the MobiLink server cache could have erroneously shrunk and not recovered. This has been fixed. A work around is to use a larger -cinit option value, and if the problem persists to disable dynamic cache resizing by specifying the same value for -cmax and -cmin.

Also, on 12.0.0 for Windows, the cache could have failed to stabilise. This has also been fixed.

657970 As of 12.0.1, a version 12.0.1 EBF can be applied to a version 12.0.0 installation, as long as certain conditions are met. In this case, any 12.0.0 components are upgraded to version 12.0.1. This was happening without warning the user that they will be upgrading to a newer version, rather than just a newer build number. This has been fixed. The installer now warns that the software will be upgraded and asks if the user would like to continue.
657979 The MobiLink Monitor's Zoom To Selection menu or toolbar button might not have panned to the selected synchronization until it was used a second time. This has been fixed.
657987 The server could have crashed, or failed assertion 200114, when processing a LIKE predicate. This has been fixed.
658114 The server would have crashed if a SELECT statement useed the FOR XML EXPLICIT clause, and a null value was used for the CDATA directive. This has been fixed
658121 On some Windows machines, attempting to make a TCP connection to a Personal Server on the same machine may have failed. This has been fixed.
658130 SQL Anywhere web client procedures were not able to proxy https requests. This has been fixed.

The following example routes an https request destined for 'securehost' (default port 443) through a proxy host named 'squid' listening on port 8080:

create or replace procedure test()

URL 'https://securehost/service'

TYPE 'HTTP:GET'

PROXY 'http://squid:8080';

658169 When using the Service utility (dbsvc) for Linux to create an automatic service (when the machine boots) on Linux SUSE 11 for the SQL Anywhere server, the server may have started before the network service had been started. As a result, some applications running inside the SQL Anywhere server may have failed to work properly. This issue would have affected SQL Anywhere Server Monitor deployments. This has been fixed.
658189 If a copy node (S3) was starting just as its intermediate node parent (S2) was receiving pages from the root (S1), S3 could have failed to receive some of the pages and would have reported a corrupt transaction log file. This has been fixed.
658302 If many contiguous index entries were removed from an index with no intervening inserts, concurrent snapshot transactions could have seen incorrect results, and in rare circumstances, foreign rows could have been added without matching primary rows. This has been fixed.
658330 Execution of an INSERT ON EXISTING UPDATE statement, with CASCADE as the foreign key update option, would have resulted in a foreign key constraint violation error when updating values which were logically the same, but had different physical representation. For example, in case insensitive database changing 'EMPLOYEE' to 'employee'. This has been fixed.
658334 If a database option value contained a single quote, the reload script generated by the Unload utility would have resulted in a syntax error when the database was reloaded. This has been fixed.
658453 When using MobiLink synchronization and timestamp-based downloads with an Oracle Real Application Cluster (RAC) system, there is a chance of missing rows to be downloaded if the clocks of the Oracle cluster nodes differ by more than the time elapsed between the MobiLink server fetching the next last download timestamp and fetching the rows to be downloaded. This problem is unlikely on a RAC system with synchronized node clocks, but the likelihood increases with larger node clock differences. A workaround is to create either a modify_next_last_download_timestamp or modify_last_download_timestamp script to subtract the maximum node clock difference.

Note that at least since version 10i, Oracle has recommended using Network Time Protocol (NTP) to synchronize the clocks on all nodes in a cluster, and NTP typically runs by default on Unix and Linux. With cluster nodes properly configured to use NTP, their clocks should all be within 200 microseconds to 10 milliseconds (depending on the proximity of the NTP server). Since Windows Server 2003, the Windows Time Service implements the NTP version 3 protocol and it runs by default. Also, as of version 11gR2, Oracle Clusterware includes the Oracle Cluster Time Synchronization Service (CTSS) to either monitor clock synchronization or, if neither NTP or Windows Time Service is running, it will actively maintain clock synchronization. However CTSS and Windows Time Service are less accurate than NTP,

To avoid missing rows when Oracle RAC node clocks differ by up to one second more than the time between fetching the next_last_download_timestamp and the rows to be downloaded, now the MobiLink server will subtract one second from the next_last_download_timestamp fetched from the consolidated database, if

1) the Oracle account used by the MobiLink server has execute permission for SYS.DBMS_UTILITY,

2) the consolidated database is an Oracle RAC system,

and (only for MobiLink version 12.0.0 and up)

3) there is no generate_next_last_download_timestamp script.

For Oracle RAC node clocks that may differ by greater amounts, you can avoid the problem by defining a generate_next_last_download_timestamp, modify_next_last_download_timestamp or modify_last_download_timestamp script to compensate for the maximum node clock difference.

658458 When editing options for configuration, but not editing Data Reduction, a warning message for Data Reduction was displayed. This has been fixed.
658482 When a MobiLink Monitor instance that already had a horizontal scroll bar, was connected to a MobiLink server, the Utilization Graph time scale (if Utilization Graph was enabled) would have been different than the Chart time scale. After being connected long enough for the horizontal scroll bar to be redisplayed, the scroll bar position would have been incorrect and the Overview Marquee Tool would have fluctuated between the inconsistent time scales. This has been fixed.

A workaround is to use the Marquee Tool, or change the zoom to fix the display, or disable the Utilization Graph to prevent the problem.

658549 Result set rows could have been presented in an incorrect order when all of the following conditions were present for a SQL query:

- An index existed in which the first column (say col1) was specified to be in descending order

- The query contained a search condition of the form "col1 LIKE expression" where the expression started with non-wildcard characters.

- The query contained an ORDER BY starting with col1

This has been corrected.

658710 When the Relay Server was being reconfigured, a crash may have occurred in the rs_client.dll, and all http requests served by the same worker process would have failed. The web server would then have replenished the worker pool and the Relay Server would have continued to operate with the new configuration. The issue is highly timing sensitive and is very difficult to reproduce. This crash has now been fixed.
658834 Attempts to apply an EBF install could have erroneously rolled back during the SQL Anywhere Monitor data migration. This has been fixed
658845 Result set rows could have been presented in an incorrect order when all of the following conditions were present for a SQL query:

- An index existed in which the first column (say col1) was specified to be in descending order

- The query contained a search condition of the form "col1 LIKE expression" where the expression started with non-wildcard characters.

- The query contained an ORDER BY starting with col1

This has been corrected.

658849 If an application on a Unix system attempted to make a TCP/IP connection to a server that was not running, the connection attempt may have failed with error code -832 "Found server but communication error occurred". This has been fixed, the correct error code should be

-100 "Database server not found".

658860 Sybase Central would have crashed when using the QAnywhere plugin to define a property for a connector and the property was given both a blank name and value. Now, the creation of properties with blank names is prevented, as these are meaningless in any case. A message box indicating that the property name must not be empty is displayed.
658887 The OLE DB DBSCHEMA_FOREIGN_KEYS rowset returned the following indicated integer values for the UPDATE_RULE or DELETE_RULE referential actions.

CASCADE 0

if referential action is NULL 1

SET NULL 2

SET DEFAULT and RESTRICT 3

These values, derived from the ODBC SQLForeignKeys result set, did not match the following OLEDB constants defined for these referential actions.

DBUPDELRULE_NOACTION = 0x0

DBUPDELRULE_CASCADE = 0x1

DBUPDELRULE_SETNULL = 0x2

DBUPDELRULE_SETDEFAULT = 0x3

Furthermore, the DBSCHEMA_FOREIGN_KEYS rowset should have returned strings rather than integers for the UPDATE_RULE or DELETE_RULE referential actions. The OLE DB specification states:

If a rule was specified, the UPDATE_RULE or DELETE_RULE value is one of the following:

"CASCADE" � A <referential action> of CASCADE was specified.

"SET NULL" � A <referential action> of SET NULL was specified.

"SET DEFAULT" � A <referential action> of SET DEFAULT was specified.

"NO ACTION" � A <referential action> of NO ACTION was specified.

Providers should return NULL only if they cannot determine the UPDATE_RULE or DELETE_RULE. In most cases, this implies a default of NO ACTION.

Also, the fix for Engineering case 620136 did not handle the situation when there was no declared Primary Key in the primary table but there were table or column (not nullable) Unique Constraints that permitted the addition of foreign keys.

These problems have been fixed. The Upgrade utility should be used to update the OLE DB schema rowset support in any database used with ADO, ADOX or OLE DB.

658985 Unexpected deadlocks could have occurred when using the UPDLOCK hint at isolation level 3. For example, if two transactions issued the statements

SELECT t.c FROM t WITH (UPDLOCK) WHERE t.pk = 1

UPDATE t SET c = 2 WHERE t.pk = 1

concurrently at isolation level 3, a deadlock would have occurred if both connections managed to issue the SELECT before either issued the UPDATE. This has been fixed.

659115 The server may have crashed if a query block contained an alias definition and the expression of the alias used columns that could be folded as a constant, (in the example below, alias v011 can be folded as a constant if column T2.a2 was created as NOT NULL), and the alias name was used in a subselect of the query block and in the GROUP BY clause of the query block.

For example:

select if T2.a2 is null then 99999 else 11111 endif as v011,

(select count(*) from T1 where T1.a1 = v011) as c

from T2,T3

where T2.a2 = T3.a3

group by v011

This has been fixed.

659138 In exceptionally rare cases, the server may have crashed if two procedure debuggers had been attached to a database and one of them disconnected while a new connect request for a user to debug was being executed. This has been fixed.
659140 The text completer may not have suggested any matches if there was an empty single quoted string earlier in the statement, or in a previous statement. This has been fixed.
659177 If a non-initialized materialized view or text index was selected in the tree and the Data tab was selected in the right-pane, then attempting to switch from one mode (Design, Debug or Application Profiling) to another would have caused a refresh of the materialized view or text index to be prompted for twice. This has been corrected so that there is now only one prompt.
659337 SQL changes in the Plan Viewer and Spatial Viewer windows were ignored if the Editor component had been selected, "Options" was clicked and then dismissed by clicking "OK". This has been fixed.

This issue had at least one other symptom: If a file was opened, "Options" for the editor was selected, either by right-clicking as described above or by opening the Options window, then clicked "OK", subsequent changes in the Editor would not have caused the Interactive SQL utility's window title text to include an asterisk. The asterisk indicates that there are unsaved changes in the editor.

659357 Running the Deployment wizard when SQL Anywhere had been installed to directory with a path containing multi-byte characters would have caused the generation of the MSI to fail with an error like: "C:\Sy绛剧讲\SQL Anywhere 12\bin32\dblib12.dll (Not Found)". This has been fixed.
659363 The Timeout, SendBufferSize, and ReceiveBufferSize TCP options now have upper limits. Values specified above these limits will result in connection failure (-832). The limits are:

Timeout: 3600 seconds

SendBufferSize: 1048576 bytes (1 MB)

ReceiveBufferSize: 1048576 bytes (1 MB)

659370 Inlining of simple functions could have generated unexpected errors or incorrect results. For incorrect results to have occurred, the caller of the function had to have variables defined with the same names as the inlined function. This has been fixed.
659608 When making an external environment call, if the external environment procedure made a server side request that ended up leaving a cursor on a temporary table open, then the server could have crashed when the connection was closed. This problem has now been fixed.
659615 Some internal optimization algorithms have been generalized and improved. This may change plans for queries.
659631 If an application enlisted a connection within a DTC transaction and then subsequently attempted to perform a DTC commit on the transaction after explicitly unenlisting it first, then the application would have hung until the server was shut down. This problem has now been fixed and the commit request will now immediately fail as expected.
659639 When making a Java external environment call, if the stored procedure had an argument of type char (note that this is a single char value rather than a java.lang.String), and a NULL value was passed in for the char argument, then the server would have failed the request with a Java NullPointerException. It should be noted that the Java VM would have continued to run in this situation and the connection was still able to make subsequent Java external environment calls. This problem has now been fixed such that passing a NULL char value to a Java external environment call will result in a char with zero value being passed down to the Java method. Again, it should be noted that this problem does not affect passing NULL string values to java stored procedures.
659643 An application could have crashed if it was attempting an Integrated Login or Kerberos connection and the connection to the server was lost. This could have occurred if the server was stopped or terminated during the connection. This has been fixed.
659804 If a proxy table or proxy procedure was defined with variables in the AT clause, then the AT clause would have been incorrectly truncated if the length of the AT clause after variable expansion was greater than the length of the original AT clause. This problem has now been fixed.
659866 If an invalid value was specified for the "(other)" parameter on the Synchronization Profile property sheet, then it was not possible to clear this invalid value unless the property sheet was closed and F5 was pressed. This has now been fixed.
659870 Empty string values indexed by an IMMEDIATE text index were not counted towards the total number of documents indexed, unless more than one column was indexed and the value in at least one of the columns was neither an empty string nor NULL. This problem caused scores for full text queries to be lower then they should have been if all the documents were correctly counted. Additionally, a memory leak could have occurred in this situation. This has been fixed.

Note, if a text index was created or updated using a server with this problem, it may be necessary to rebuild the index with an updated server if problems are encountered with the index.

659922 A syntax error could have been incorrectly generated for an outer reference occurring in a subquery containing another nested subquery, where the outer reference was to the right of the nested subquery. This has been corrected.
660005 If a file was opened in the Interactive SQL utility and then the window was closed, the file would still have been locked by the dbisql process if the "Enable fast launcher" option was on. This has been fixed.
660024 In version 10, web service requests sent to a server acting as mirror would have been redirected to the same port on the primary server. Starting with version 11, this redirection no longer happens. In version 12, the documentation was updated to reflect the change in behavior.

No change in behavior from earlier builds of version 11 should be seen with this software change.

660057 If a foreign key was created with both MATCH and CHECK ON COMMIT clauses, and the database subsequently required recovery, recovery would have failed when replaying the statement from the transaction log. This has been fixed.
660190 The folder names under %SQLANYSAMP12%\UltraLiteJ\Android\CustDB used mixed case and in some cases were incorrect in the GA release of 12.0.1. This caused Eclipse to fail when building the sample. This has been fixed such that future remastered releases will use the correct case. However, EBF installs will not fix these incorrect folder names. A workaround is as follows:

Before attempting to build the sample in Eclipse, ensure that the sub-directory names are as show below. Note that all names are lower case and that hyphens (-) should be used, not underscores (_), where applicable.

libs

res

src

libs\armeabi

res\drawable-hdpi

res\drawable-ldpi

res\drawable-mdpi

res\layout

res\menu

res\values

src\com

src\com\sybase

src\com\sybase\custdb

660194 Execution of a query on a Directory Access proxy table with a WHERE clause that contained a predicate of the form "file_name = variable", may have sometimes run very slowly while running very quickly most other times. This problem has now been fixed such that the query performance is now consistently fast from one run to the next.
660204 Specifying a TCP timeout value of more than 2147 seconds could have caused connection failures. This has been fixed.
660211 In rare circumstances, calling the system procedures sa_locks, sa_describe_shapefile, st_geometry_dump, sa_list_cursors, or sa_mirror_server_status, could have caused the server to crash, or could have caused unpredictable behaviour. The problem was more likely to have occurred when small cache sizes were used. This problem has been fixed.
660217 SQL Anywhere's SQL Flagger erroneously flagged various syntactic constructions as errors with specific standards (with either Core or Package functionality).These included:

- the WHILE statement

- a list of DECLARE statements within a batch, procedure, function, or trigger

- UNSIGNED exact numeric types

This has been fixed.

660235 On Windows Vista and later operating systems, whenever a new server executable had to be launched in order to autostart a database, launching the executable may have failed when a relative path to the server executable was specified. For example, dbspawn mybin\dbsrv12.exe -n myserver my.db, or using "...;start=mybin\dbsrv12.exe..." in a connection string, could have fail to launch the server executable. This problem has been fixed.
660248 If an application connected via jConnect or Open Client and made an external environment call that returned a result set, then the server may have crashed. This problem has now been fixed.
660263 Incorrect results were possible for a deeply nested (at least a depth of three) aggregate subquery. This has been corrected.
660387 Incorrect results were possible for a deeply nested (at least a depth of three) aggregate subquery. This has been corrected.
660428 The MobiLink server could have crashed during shutdown if user spawned Java threads printed to System.out or System.err after the ShutdownListeners were notified of shutdown. This has been made much less likely to happen. A work around is to ensure all user threads are stopped before the ShutdownListeners return.
660432 Creating a variable with an initial value specified as a host variable did not give a syntax error in some cases. This has been fixed.
660446 Performing a backup with a TRANSACTION LOG RENAME would have caused read-only connections to the database on the mirror server to be dropped. This has been fixed.
660501 Incorrect results were possible when executing a query with an IN list consisting of a single host variable. This has been corrected.

The work-around is to rewrite

expression in ( ? )

as

expression = ?.

660611 When the MobiLink Replay utility used HTTP, wasn't providing the correct ml-client-id headers and instead always generated GUIDs. This has been fixed so that the ml-client-id header is now always set to the remote ID.
660629 When connected to an ASE 15.5 server and attempting to make a remote request to SQL Anywhere, there was a chance the request would have failed with an "unkown token 35" error. This problem has now been fixed.

Note that this problem only affected remote requests from ASE to SQL Anywhere. The problem did not affect making remote requests from SQL Anywhere to ASE via Remote Data Access.

660656 After updating an external environment object via File->Update..., the object's Contents tab would not always have reflected the changes made to the object. This has been fixed.
660691 When accessing a directory or file using a Directory Access Server, if the name of the directory or file contained a multi-byte character where one of the bytes in the character was 0x5C, then the Directory Access Server would have failed to find the directory or file. This problem has now been fixed.
660797 During a large (at least 15 MB) data synchronization, the UltraLiteJ native library for Android could have caused a Dalvik VM memory overflow condition similar to the following:

WARN/dalvikvm(641): ReferenceTable overflow (max=512)

...

ERROR/dalvikvm(641): Failed adding to JNI local ref table (has 512 entries)

...

ERROR/dalvikvm(641): VM aborting

The memory overflow condition would have occurred during a Connection.synchronize( SyncParms parms ) call, where a SyncObserver was defined in the SyncParms. This has been fixed.

660813 If the database was blank padded and the database option Compression was set to be -1, .SQL Remote would have logged the following warning message in its output file:

Option DBA.Compression contains invalid value -1

The value -1 is a valid value, it was the blank padding that was causing the option to be treated as invalid. This problem has been fixed.

660834 The server could have hung for thirty seconds or more when it was establishing a mirror or diagnostics connection to another server. This has been fixed.
660851 When a primary server lost its connections to both the mirror and arbiter servers as a checkpoint was performed, the database on the primary may not have been recoverable. Typically, it would fail assertion 100904. This has been fixed.

Similarly, in cases where a primary server lost its connections to both the mirror and arbiter servers as a checkpoint was performed, the next time the primary and mirror servers were connected and attempt to synchronize, the mirror server may have in rare situations reported "Database "<name>" mirroring: database is not compatible with primary; files must be replaced" and then stop with the message "Database server shutdown due to incompatible files for database mirroring". This has been fixed to reduce the possibility of this occurring. It is possible for this to still occur, so then the database running on the current primary must be manually copied or backed up to the mirror server so that the server can successfully synchronize again.

The primary server could have hung, again in rare situations, if only one of the two connections between it and the mirror server was dropped, for example due to a liveness timeout. This has been fixed.

When the mirror server was becoming the primary server there was a small possibility it could have hung after reporting it was starting a checkpoint and then reporting it was recovering. This has been fixed.

660995 When connected to a Relay Server, and no Outbound Enabler providing the backend service had connected yet, the connection was expected to timeout within the application timeout time specified by the client. However on IIS7, some J2SE http clients may have become stuck writing to a server that was no longer reading and eventually failed the write and then perform a delayed internal retry without processing the response sent by the web server. This change modifies the Relay Server to provide the expected fail fast experience according to the timeout against such J2SE clients.
661008 Right-clicking on an UltraLite database in the UltraLite Sybase Central plug-in, will show a list of database properties, one of which is the database file name. If the file name contained multi-byte characters, they could have been displayed as mangled characters. This has now been fixed.
661034 Under rare conditions, the server could have hung while executing a query with multiple GROUP BY clauses. This may have occurred when the workload executing on the server suddenly changed (i.e. if many requests arrived almost simultaneously). This has been fixed. A workaround is to disable intra-query parallelism for the affected query (SET TEMPORARY OPTION MAX_QUERY_TASKS=1).
661035 When deploying a Synchronization Model for an existing remote database and only deploying to file, the generated Windows batch file would have failed when execute. For example, a "You are not connected to a database" error could have occurred when the batch file tried to apply the generated SQL file to the remote database. This has been fixed.

To workaround the problem, change this line in the generated batch file:

set CONNECTION=%1

to this:

set CONNECTION=%~1

661036 Activity executing on the utility_db could have caused a crash, memory corruption, or other unpredictable behaviour, if the cache were to shrink at the same time. This problem has been fixed.
661066 If a range of values was supplied for the TCP/IP option ClientPort, connection attempts may have been slow if the server was not found, or if multiple hosts were supplied for the Host option. This has been fixed.
661112 It was possible for synchronizations to fail if any of the 'certificate_name', 'certificate_company', or 'certificate_unit' parameters were supplied, even though the value of these parameters matched the corresponding field values in the server's certificate, if they were encoded as Unicode in the server's certificate. This has been corrected.
661180 On Linux systems, if the SQL Anywhere Monitor EBF was installed as a non-root user, and the SQL Anywhere Monitor service had been started by the root user, the following error messages would have been displayed:

Migrating SQL Anywhere Monitor database

Connecting...

Can't connect to source database.

[Sybase][JDBC Driver][SQL Anywhere]Specified database not found

Rolling back files in /opt/samonitor12 ...

wc: ./.ebf_20110601-1149/samonitor.db: Permission denied

Cleaning up ...

This has been fixed so that the following error message is now displayed:

The setup program was unable to stop a running instance of SQL Anywhere Monitor.

Please stop it manually and run the setup program again.

A workaround is to stop the SQL Anywhere Monitor service manually, then re-run the EBF installer.

661188 The 64-bit UltraLite ODBC driver (Bin64\ulodbc12.dll) was not being correctly registered. This would have resulted in the failure of Interactive SQL and/or Sybase Central to load an UltraLite database. The has been fixed.

Alternatively, the driver can be registered manually using the following command:

regsvr32.exe %SQLANY12%\Bin64\ulodbc12.dll

661193 Atempting to call a Java external environment stored procedure or function with a very long binary or string input argument, could have taken a very long time to execute. This problem has now been fixed.
661198 On Fedora 14 Linux systems with SELinux enabled, the SQL Anuywhere Monitor and the Administration tools would have failed to launch. Launching on the command line would have shown an error message like:

ERROR! Could not load the Java virtual machine DLL: /opt/sqlanywhere/sun/jre160_x86/lib/i386/client/libjvm.so

This has been fixed. A workaround is to run "setenforce 0" as root.

661225 A network environment that was sensitive to HOST header inspection on http traffic, may have caused the Outbound Enabler to fail to connect to the Relay Server, or it may have connected to the wrong server. This has been fixed.
661242 A silent install of SQL Anywhere Monitor in which the location of the database (DIR_SQLANY_MONITOR) was not specified, would have caused the database to be installed to %SystemDrive%\CommonDocFolder. This has been fixed so that the correct default location is now used (%ALLUSERSPROFILE%\Documents\SQL Anywhere Monitor 12).
661431 The graph could have displayed data deleted by a maintenance run if it was open when the maintenance plan ran. This is not a bug because the graph only gets new points � not all points. The real bug was the fact that automatic browser refreshes were not happening every hour, just once after the first hour. This has now been fixed.
661440 In rare cases, the server may have crashed while performing DDL and DML operations concurrently. This has been fixed.
661453 If the distance parameter of the proximity search condition contained letters, the server could have silently failed, and returned some result, instead of reporting an error. This has been fixed.

For example, the following query would not report an error and would behave as if the

full text query was 'apple NEAR[2] oranges':

SELECT *

FROM t CONTAINS( 'apple NEAR[ 2b ] oranges' )

Note that the following query was correctly reporting an error:

SELECT *

FROM t CONTAINS( 'apple NEAR[ b ] oranges' )

661459 The .NET provider was incorrectly assuming that a Sybase IQ 12.7 server supported the NCHAR datatype. This resulted in a failure to establish a connection to a Sybase IQ 12.7 server. This problem has been fixed.
661493 The certificate utilities, Certificate Viewer (viewcert), Certificate Creation (createcert), and Key Pair Generator (createkey), now run on 64-bit Windows.
661622 Execution of a query with a subselect predicate correlated on two different tables from the main query block may have caused an assertion failure in the server. This has now been fixed

For example:

Select *

from T1, T2

where T1.X = (select e1 from R where p(R,T1, T2) ) and ..

The predicate "T1.X = (select e1 from R where p(R,T1, T2) )" has a subselect and references both tables T1 and T2 from the main query block.

661633 Execution of an "UPDATE ... PUBLICATION ... WHERE .." statement with a complex WHERE clause may have caused the server to crash. This has been fixed.
661663 For each outgoing HTTPS web procedure connection, a small amount of memory was leaked which could eventually have lead to memory exhaustion. This has been fixed.
661791 A query containing a join between two or more tables could have returned an incorrect result if the executed query plan used an Index-Only Scan of some index T_idx over table T. For the problem to have occurred, a column T.col must have participated in a non-equality join predicate (e.g. "T.col < S.col", or "T.col BETWEEN S.col1 AND S.col2"), and there must have existed one or more columns in index T_idx preceeding T.col that did not participate in equality predicates. This has been fixed.
661849 When using the Service utility (dbsvc) to start a Relay Server service with a large configuration on a slow machine, it may have reported startup errors while the service was still in the pending start state. A fix was made to the Relay Server to correct this problem.
661930 In some cases, the UltraLite Database Unload utility (ulunload) would have generated foreign keys in its XML output file that were not really in the database being unloaded. This has been fixed.
662000 Attempting to insert a variable of type LONG BINARY into a proxy could have taken a very long time, even though the variable was only a few megabytes in length. This problem has been resolved and the performance of inserting LONG BINARY variables into proxy tables has been greatly improved. Note that this fix also improves the performance of inserting LONG VARCHAR and LONG NVARCHAR variables into proxy as well.
662025 In some cases, the server would have displayed recovery progress messages incorrectly when recovering a large transaction log. In this situation, either no messages would have been displayed or an incorrect percentage would have been displayed. This has been fixed.
662054 When deploying, the directory used by the Interactive SQL utility, Sybase Central, the Console utility, and the MobiLink Monitor, can now be specified. To do this, an OEM.ini file must be deployed along with these utilities. The file must contain the following lines:

[preferences]

directory={preferences files directory|

where "preferences_files_directory" is a fully-qualified directory name, e.g. "c:\work\prefs". The directory name should not end in a separator (backslash on Windows; forward slash on Unix and Mac OS X).

Preferences files include:

.isqlPreferences12_32

.isqlPreferences12_64

.isqlHistory12

.jlogon12

.textCompleter12

.SybaseCentralEditor610

.scUserPreferences610_32

.scUserPreferences610_64

among others.

662072 When deploying a Synchronization Model with conflict resolution to a SQL Anywhere or Sybase IQ database, the SQL generated to create a global temporary table checked twice for an existing table. Although this did not cause any errors, the generated SQL has been fixed so that it now only checks once for an existing table before creating a global temporary table.
662074 The following UltraLite resumable-download problems are now fixed:

In rare cases, UltraLite incorrectly computed where to resume the download. When this occurred, the subsequently resumed download was effectively corrupted, likely causing a synchronization error. (To recover, the download must have been rolled back.)

When resuming a download, the server continued to use the original 'timeout' specification, but UltraLite used the default. If a non-default timeout value was specified, the resumed download may have timed out even though the network connection was fine (though it still maked progress).

Sometimes the sync-info (or sync-result) 'partial_download_retained' flag was false after trying to resume a download when there was still a partial download present. (Workaround is to only make use of this flag when first set - attempting to subsequently resume when there is no partial download is safe and returns an error.)

As well, the following problem is fixed:

The COMMITTING_DOWNLOAD sync observer state was signaled later than it should have been. The observer saw UltraLite was still receiving the download, when in fact it had begun committing the download.

662232 The performance of database changes on first update (commit) after starting up has been improved.
662233 The connection properties on the Advanced page of the Connect dialog were not filled when attempting to reconnect following a disconnect. For this problem to have occurred, the IQ plug-in for the Interactive SQL utility would needed to have been loaded. That plug-in is loaded by default starting in version 12.0.1.

A similar problem affected the TLS packet encryption parameters on the Network page.

Both of these problems have now been fixed.

662248 In rare, timing and data-dependent cases, the server could have hung or crashed during execution of parallel query plans. This has now been fixed.
662419 A mirror node in a mirroring system could have failed to recover its database if the database used sequence generators, and the primary and mirror roles switched between the

servers. This has been fixed so that servers can now recover logs that exhibit this problem.

662421 The nomenclature used to refer to .SQL script files and individual SQL statements has been made consistent throughout the software. This change affects the wording in some error messages, and the following UI elements:

1. On the "General" panel in the Options window, the first group box title was changed from "Command Files" to "SQL Script Files" and the first checkbox, "Echo command files to log" has been renamed "Echo SQL script files to log".

2. The "Commands" tabs in the Options window (there are three of them: one for SQL Anywhere, one for UltraLite, and one for IQ) have been renamed from "Commands" to "Execution".

3. The command-line help now clearly refers to SQL statements as "statements" rather than "commands".

4. The "Command History" window has been renamed "History"

662452 Attempting to start a connection-scoped external environment, and then canceling the start request before the external environment completed the startup process, could have caused the server to crash. This problem has now been fixed.
662456 On a Windows Mobile device, the QAnywhere Agent (qaagent) would have sometimes given the following error messages at start up:

E. 2011-03-14 08:33:50. Error registering with DBLSN code: -1

The error message was displayed in a message box, even when qaagent was executed in quiet mode. This has been fixed. Now, qaagent is more tolerant to dblsn slowness at startup. Also, a message box is not displayed when qaagent is executed in quiet mode (-q or -qi), and the message is logged in the qaagent console and log file.

662466 Some potential security issues have been fixed.
662477 When resuming a download, the sent and received statistics are restored from the previous sync and continue as expected from that point, except the byte counts, which were reset to zero. This has now been fixed. The byte counts (like the row statistics) are cumulative for resumed downloads. These statistics are available to the synchronization observer callback and are contained in the sync-results object.
662639 When a SQL Anywhere database is used as a remote database, the MobiLink client (dbmlsync) generates a remote ID which is a GUID for the database during the first synchronization. This remote ID is used by the Mobilink server to identify the remote. MobiLink keeps a list of synchronizing remotes in the ml_database table. When a blank padded SA database was used as a remote, a remote ID would have been generated during the first synchronization, sent to the MobiLink server and stored in the ml_database table. On all subsequent synchronizations, a blank padded version of the remote id would then have been sent. The results of this were:

1) The server would not have been recognized on the second sync that the same remote was synchronizing and would treat the second sync as a first sync. That is to say the server would not have used state information it had from the first sync when processing the second. Third and subsequent sync's were not affected. This would have had no impact unless the first synchronization had failed.

2) Two entries would have been made in the ml_database table for each remote. One would contain the blank padded remote id and the other would contain the unpadded id.

This behaviour has now been fixed. Now, on first synchronization the remote_id assigned to the remote database will be blank padded.

662749 Proxy support for the Relay Server Outbound Enabler may only have worked with HTTPS against some HTTP 1.1 proxy servers. The down channel using HTTP instead of HTTPS would have connected successfully at first but then would have been dropped by the proxy after a period of being idle. This problem is proxy specific and is does not affect all HTTP proxy environments. This problem has been fixed in the Outbound Enabler so that HTTP will now also work. The workaround is to use HTTPS.
662766 When using the Deployment wizard to build an MSI install containing both 64-bit and 32-bit software, the jvm.dll in the sun\jre160_x64\bin\server directory was being replaced by the 32-bit version. This could have occurred whenever two different files were included with the same name, in a directory with the same name, and with the same parent directory. This has been corrected.
662770 There were three "Update Checker" tabs in the "Options" window -- one for SQL Anywhere, one for UltraLite, and one for IQ. Now there is just one, and it appears in the list on the left side of the window, after "Compatibility".
662896 When using the OLEDB provider, if a statement was prepared, executed, and then the ADO MoveFirst() (OLE DB RestartPosition() ) method was called when the cursor type was forward-only, the statement would have become unprepared. Subsequent attempts to execute the prepared statement would then have failed. This problem has been corrected.
662919 The SQL/Stop menu item used to have "Ctrl+Break" as its accelerator. This accelerator has been removed on all platforms except Windows because the accelerator did not work. Ctrl+Break continues to be supported in Windows.
662942 Charting metric data may have omitted some ending data points. This has been fixed.
662944 On Mac OS X, the tool tips for the "zoom in", "zoom out", "reset view", and "save image" buttons in the "Value of Column" dialog indicated that the Control key should be held down to activate the button. This was incorrect, it should have shown the Command key. This has now been fixed.
663056 In exceptional rare situations the server could have crashed or failed assertions 106808, 100913, or 111706 if very long property values are queried. This has been fixed by truncating property values to the max varchar length of 32000 bytes.
663061 Proxy support for the Relay Server Outbound Enabler may only have worked with HTTPS against some HTTP 1.1 proxy servers. The down channel using HTTP instead of HTTPS would have connected successfully at first but then would have been dropped by the proxy after a period of being idle. This problem is proxy specific and it does not affect all HTTP proxy environments. This problem has been fixed in the Relay Server so that an update to the Outbound Enabler is not required (see Engineering case 662749). The workaround is to use HTTPS, or apply the Outbound Enabler fix from case 662749.
663123 Creating an ODBC data source for IQ from the Connect dialog did create a DSN, but it was not created correctly. The following issues have been fixed:

1. The driver name for the data source was always "SQL Anywhere 12" rather than "Sybase IQ". This prevented the data source from being listed in the "Data Source Names" window unless you checked "Show all data sources". Also, to connect using the data source, the SQL Anywhere ODBC driver had to be installed.

2. Creating a system data source would fail on machines that did not have "dbdsn" installed. This would be a problem on computers running Vista or Windows 7 which have IQ installed, but not SQL Anywhere.

663171 The Relay Server may not have responded to HTTP GET requests for non-relay purposes. For example, using a browser to visit the rs_admin extension would have resulted in a connection drop without a response. A load-balancer trying to test the Relay Server service via the rs_server extension, would also have resulted in a connection drop without a response regardless of the status of the relay service. This has been fixed so that a useful response is now provided when HTTP GET requests are issued against various Relay Server extensions.
663259 The Remote Data Access feature is now capable of loading the SQL Anywhere ODBC driver directly. If a remote server is defined similar to the following:

CREATE SERVER remote-server CLASS 'saodbc' USING 'driver=SQL Anywhere Native;...'

where the the USING clause contains the key pair "driver=SQL Anywhere Native", and the remainder of the USING clause provides all the connection parameters necessary to successfully connect to the remote SQL Anywhere server, then the remote data access layer will load the SQL Anywhere ODBC driver directly and bypass the Windows ODBC Driver Manager on Windows based platforms and the SQL Anywhere ODBC Driver Manager on UNIX platforms. The benefit to loading the SQL Anywhere ODBC driver directly is that, although the ODBC driver still needs to be installed, it no longer needs to be registered if it is only being used for the remote data access support. What's more, if there are multiple copies of the ODBC driver installed, then loading the ODBC driver directly will guarantee that the ODBC driver for the current server version gets used rather than one that was registered with a previous version of SQL Anywhere. It should be noted that if the application also makes use of non-SQL Anywhere remote servers or if there are SQL Anywhere remote servers defined without the "driver=SQL Anywhere Native" key pair, then the remote data access layer will still use a Driver Manager for those other remote servers.

663261 The Relay Server Outbound Enabler on MacOS may have failed to receive all download data from the backend server. If Relay Server for Apache was used, then it would have appended a 500 HTTP error page to the data, which most likely would have caused client failure. This has now been fixed.
663264 If executing a statement causes an error, the window which shows the error now includes line numbers beside the SQL statement lines. This can make it easier to see which line caused the error when executing a compound statement.
663279 Clicking the "Stop" toolbar button in the Interactive SQL utility often did not stop execution if many short-running statements were being executed. It did work correctly if executing a single long-running statement. This has been fixed.

The workaround for this problem is to use the SQL->Stop menu item, which always works.

663283 The server may have chosen less that optimal plans for queries with predicates of the form 'T.X=(unknown expression)' if an index on T(X) existed. The '(unknown expression)' could have been, for example, a variable whose value was not used for queries inside the procedures, or could have been a complex expression (i.e. "R.Y+1"). This has now been fixed.
663307 UltraLite now supports the 'armv7' architecture when targeting iOS. With the just-released Xcode and SDK versions, the default includes armv7.
663442 It was not possible to set the logging verbosity for backend server farms from the Farm property sheet. This has now been corrected.
663459 Attempting to autostart a database server on Windows CE when one was already running was incorrectly giving the error:

"Unable to start specified database: server exit code -11728"

(where the number could vary).

This has been fixed to return the correct error:

"Database server already running"

Note that on Windows CE only one database server can be running at a time, even if when attempting to start a second server with a different name.

663470 On CE devices, if multiple applications were running simultaneously, the library dbdata.dll could have been deployed multiple times to the temp directory. This problem has been fixed.

Additionally, the version number has been added to the native dll name (i.e. dbdata12.dll). This will allow running multiple versions of the provider simultaneously on Windows CE.

663502 A new UltraLiteJ utility, ULjExportBuilder, has be added. This utility takes an existing J2SE UltraLiteJ database and produces a more compact file that can be deployed to J2SE or RIM clients. An equivalent database can then be created from the exported file.

usage: ULjExportBuilder database-file exported-file

The required two arguments are file names. The database must not be encrypted and must be a shadow-page database (the default).

To invoke the export functionality from a Java program, create an object com.ianywhere.ultralitej.pgmsutility.ULjExportBuilder (there are no arguments passed to the constructor) and then invoke the export method with one argument which is a two-element String array containing the names of the database and export files respectively.

The exported file can placed on a client device using, for example, a MobiLink file transfer. The database may be imported using an import method which has three arguments:

java.io.InputStream which is used to read the exported file

String to specify the name of the database

null (no encryption) or an EncryptionControlObject which will be used to encrypt pages within the database.

(1) On Rim devices the methods are:

DatabaseManager.importDatabaseFileME (import to a RIM file in flash or on an SD-card)

DatabaseManager.importDatabaseObjectStore (import to the Rim Object store)

(2) On J2SE:

DatabaseManager.importDatabaseFile (import to a file )

663573 The SQL Anywhere Monitor's server console, would have shown the following incorrect error message:

[Sybase][JDBC Driver][SQL Anywhere]Could not load dynamic library 'dbsrvmon11' (SQLCODE: -620, SQLSTATE: HY000)

An incorrect version number being assigned when a monitor object was removed. This has been fixed.

663596 Attempting to insert a variable of type long binary, varchar or nvarchr into a proxy or IQ table that had been generated using the REPEAT() function could have caused an incorrect value to be inserted. It should be noted that this problem would only have occurred if the fix for Engineering case 662000 had already been applied. This problem has now been fixed.
663629 When replaying a recorded protocol file more than once with the same client without using the 朼p option, all replay sessions after the first would have failed due to a progress mismatch warning received from the MobiLink server (this is expected). However, the error message that appears in the MLReplay log in this situation does not make it clear that the problem will disappear if the 朼p option is used. So, the MobiLink Replay utility has been changed so that when it receives an unexpected progress mismatch from the MobiLink server, an error message saying so is logged, which points the user to use the 朼p option.
663786 The Server Enumeration utility (dblocate) may have failed to list some running database servers if many (over around 50) servers were running in the TCP/IP subnet. This problem was more likely if the -d option ("brief list of databases running on each server"). This has been fixed by increasing the UDP receive buffer size used by dblocate. For some Unix/Linux operating systems, in order for this change to take effect, the system maximum UDP receive buffer size may need to be increased. On Linux, this can be done by increasing the sysctl net.core.rmem_max setting.
663835 When the Outbound Enabler shut down, on going client requests may have taken 3 times the application timeout value to abort. This has been fixed.
663936 On Unix systems, the second field in the Relay Server's log, which is the thread ID, may shown a negative number. The type used to store the thread ID value was not big enough on Unix systems, as thread IDs tend to be large, and could have overflowed. This has now been fixed.
663937 In the Interactive SQL utility, setting the "on_error" option to "continue" was not preventing warnings from being displayed in a popup window. This has been corrected so that when the option is set to "continue", warnings are now displayed in the "Messages" pane.
663940 In very rare cases, a spatial query that applied one of the following methods to a complex geometry value may have returned an incorrect result, or an error:

1. all set operations: ST_Union, ST_Intersection, ST_Difference, ST_SymDifference

2. certain aggregation functions: ST_UnionAggr, ST_IntersectionAggr

3. certain spatial predicates: ST_Intersects, ST_Overlaps, ST_Within, ST_Disjoint, ST_Touches, ST_Crosses, ST_Contains, ST_Relate

This has been fixed.

663987 The Relay Server Outbound Enabler is now able to initiate SSL connections to the backend server. In the -cs option, HTTPS=1 is used to enable an SSL connection to the backend server. When SSL is enabled, the -cs option can take the values 'trusted_certificates', 'identity' and 'identity_password' for server and/or client authentication.
663991 Under some circumstances, queries with cached plans and queries containing complex correlated subqueries may have returned incomplete results if they were executed as parallel plans. This has been fixed.

Note, a workaround is to disable intra-query parallelism (set MAX_QUERY_TASKS=1).

664139 When a Relay Server starts up, its description was logged and the startup verbosity was applied properly, but those values were not stored correctly for later consumption. Such as for the admin tool to export the configuration or for the next configuration update to properly determine if an updated was required. This problem has been fixed.
664140 Sometime the MobiLink Listener (dblsn) could have taken a few minutes to shutdown if the shutdown was initiated by the QAnywhere Agent (qaagent). This problem has been fixed.
664247 If the system procedure sa_get_user_status() was run on a database with an extremely high number of user definitions, the procedure would have blocked DDL statements and could not have been cancelled until its result had been materialized. This has been fixed.
664280 In some cases, a sub-select that had no outer references, or a user defined function with no non-constant parameters in the select list, was evaluated when the column was first fetched from a cursor. Now these expressions are evaluated as soon as the row is returned.
664283 Relay Server enable/disable events were not broadcast to connected Outbound Enablers. For example, disabling the last Relay Server from a Relay Server farm was not going to suffer the issue described in Engineering case 664284, but when adding a Relay Server to the Relay Server farm, it would also not have woken up the Outbound Enablers to start utilizing the new Relay Server. The user workaround is to restart the Outbound Enabler. This problem has been fixed.
664284 The Relay Server Outbound Enabler would have stopped discovering Relay Servers after the last Relay Server was disabled from a server farm. The Outbound Enabler would have become unusable until restarted. This is fixed so that the Outbound Enabler will now attempt to discover new Relay Servers at the rate specified by the existing Outbound Enabler -d switch.
664292 In rare situations, the server could have crashed if a log truncation or rename (dbbackup -x or -xo or -r) took place while the server was processing a large number of transactions, especially long-running transactions. This has been fixed.

No workaround for this problem is known, except to avoid performing log truncation or renaming when the server is handling large numbers of inserts, updates or deletes.

664348 In very rare timing dependent cases, the server could have crashed or hung on shutdown if there were active client requests during shutdown. The databases would have already been stopped before the failure, so there was no chance of data loss. This has been fixed.
664390 End-to-end encryption (e2ee) has been added to UltraLiteJ for the Android platform. This was accomplished by using the new methods in the StreamHTTPSParms interface:

void setE2eePublicKey( String file_name )

String getE2eePublicKey()

The file_name is the name of an RSA public key file used in the encryption.

664490 Cancelling a query that referenced spatial functions could have caused the server to crash, although the probability was exceedingly small. This has been fixed.
664506 Steady Relay Server metrics, like peak values, values associated with idle farms, and idle error counts, may not have shown correctly in graphs inside the SQL Anywhere Monitor. The work around is to view them as current values instead of graphing. This issue has been fixed.
664507 ULDataAdapter class may have reported the error SQLE_TOO_MANY_TEMP_TABLES even if the Dispose() method was invoked. This has been fixed.
664633 A synchronization using FIPS end-to-end-encryption could have corrupted a FIPS encrypted UltraLite database. This has been corrected.
664681 Server may have hang unexpectedly. This has been fixed.
664695 In rare situations, the server could have erroneously reported the error "Not enough memory" at startup. This problem has been corrected.
664702 Queries using the spatial cast function TREAT( type1 AS type2 ) could have failed to return a syntax error when it was used incorrectly, and instead could have returned meaningless result sets. This has been fixed.
664865 In rare timing dependent cases, after a primary server relinquished ownership and had became the mirror server, it may not have received log page updates from the new primary. A high availability primary server relinquishes ownership when the partner is preferred, or due to a ALTER DATABASE SET PARTNER FAILOVER statement. If this problem occurred, restarting the mirror server would have caused it to start receiving log updates again. This has been fixed.
665004 When trying to connect using the Ruby DBI interface, the driver did not raise an error if the username/password was invalid. Instead it silently failed. This has been fixed.

--EOF

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