SQL Anywhere Bug Fix Readme for Version 12.0.1, build 3298
Choose a range of build numbers for which to display descriptions. For
example if you want to see what was fixed since the last EBF you
applied then change 3152 to the build number of that last EBF. Click Update Readme to make those changes take effect. to Update Readme
A subset of the software with one or more bug fixes. The bug fixes are
listed below. A Bug Fix update may only be applied to installed software
with the same version number.
While some testing has been performed on the software, you should not distribute
these files with your application unless you have thoroughly tested your
application with the software.
A complete set of software that upgrades installed software from an older
version with the same major version number (version number format is
major.minor.patch). Bug fixes and other changes are listed in the "readme"
file for the upgrade.
For answers to commonly asked questions please use the following URL:
Frequently Asked Questions
================(Build #3292 - Engineering Case #659363)================
The Timeout, SendBufferSize, and ReceiveBufferSize TCP options now have upper
limits. Values specified above these limits will result in connection failure
(-832). The limits are:
Timeout: 3600 seconds
SendBufferSize: 1048576 bytes (1 MB)
ReceiveBufferSize: 1048576 bytes (1 MB)
================(Build #3284 - Engineering Case #657471)================
The PHP external environment and the PHP driver now support PHP versions
5.3.3, 5.3.4, and 5.3.5.
================(Build #3287 - Engineering Case #657712)================
Additional information is now saved for graphical and long plans. This additional
information includes:
- Known values for expressions are now dumped in the plans. For example,
a stored procedure parameter known at the optimization time is dumped as
'parm1[100]' if its name is 'parm1' and its known value is '100'.
- For long plans generated by the application profiling, extra information
related to the optimization process is now dumped. For example, 'Plan [ Total
Cost Estimate: 3.5657, Costed Best Plans: 1, Costed Plans: 13, Optimization
Time: 0.074541, Estimated Cache Pages: 590 ]' This type of information is
already present for long plans generated by calling the explanation() function.
- Information related to the cached plan of a statement is now dumped in
its long plan.
- Predicates used to generate fence posts for a partial index scan are now
dumped in the long plans generated by the application profiling. This type
of information is already present for long plans generated by calling the
explanation() function.
Also, graphical plans with statistics saved during tracing did not actually
contain any statistics. This has been fixed.
================(Build #3276 - Engineering Case #655157)================
If there were any missing messages, SQL Remote would have asked for a resend
after it had reached its receive polls given by the -rp option. This resend
logic could have caused the publisher to re-scan the transaction log(s) and
slow down replicating new transactions, especially on heavy load databases.
This has been changed so that when a message in a multi-part message series
(SQL Remote will generate multiple messages for a single transaction to form
a multi-part message when the transaction is too big to fit in a single message)
is missing, SQL Remote will not immediately ask for a resend, if the received
messages are not followed by any messages that contain a commit or any messages
that belong to another multi-part message series. This new logic will help
users who
need to shut down or kill SQL Remote when it is sending multi-part messages
to its subscribers.
================(Build #3291 - Engineering Case #658860)================
Sybase Central would have crashed when using the QAnywhere plugin to define
a property for a connector and the property was given both a blank name and
value. Now, the creation of properties with blank names is prevented, as
these are meaningless in any case. A message box indicating that the property
name must not be empty is displayed.
================(Build #3284 - Engineering Case #657284)================
The MobiLink Server log file viewer in Sybase Central might not have listed
all synchronizations in a given log file separately if the log file contained
messages from more than one run of the MobiLink Server. This has been fixed.
================(Build #3284 - Engineering Case #657068)================
In the MobiLink Server Log File Viewer, selecting a synchronization could
have resulted in the window becoming unresponsive if the synchronization
contained hundreds of thousands of messages. This has been fixed.
Also, it was noticed that synchronizations were not initially listed in
chronological order if the log file contained output for more than one run
of the MobiLink Server. This has also been fixed.
================(Build #3281 - Engineering Case #656863)================
If a synchronization model had script errors that were fixed without opening
the Events editor or saving the model, attempting to deploy the model would
have erroneously failed because of a script error. This has been fixed.
================(Build #3280 - Engineering Case #656291)================
If a Destination Alias defined in a Server Store was deleted, the alias was
still shown in Sybase Central until the QAnywhere server completed the deletion.
That could have taken up to a minute, or could never have happened if the
QAnywhere server was not running. If deleting the alias was tried a second
time, an obscure error message would have been displayed saying that the
alias could not be deleted. Now, the Destination Alias is removed from Sybase
Central as soon as the user deletes it, the same as in earlier versions of
Sybase Central.
================(Build #3278 - Engineering Case #655987)================
The "Apply" button on the property sheet for a Remote Task was
not enabled when various changes were made. Now, the button is enabled correctly.
================(Build #3275 - Engineering Case #654759)================
Changes to the members list were not saved when the OK button in the property
sheet for a destination alias. Also, the Apply button was not enabled after
a member was added, removed, or edited. Both of these problems have now been
fixed.
================(Build #3268 - Engineering Case #653058)================
When creating a rule with a "Custom" schedule type, the schedule
that was saved could have been incorrect if "Run rule every" was
turned off in the "Schedule Editor" window. The rule was saved
such that it was run every 10 minutes. This has been fixed.
================(Build #3266 - Engineering Case #652577)================
Sybase Central could have crashed while the property sheet for a client message
store was open, if adding a new property was started, but then the action
was cancelled. This has been fixed.
================(Build #3289 - Engineering Case #658482)================
When a MobiLink Monitor instance that already had a horizontal scroll bar,
was connected to a MobiLink server, the Utilization Graph time scale (if
Utilization Graph was enabled) would have been different than the Chart time
scale. After being connected long enough for the horizontal scroll bar to
be redisplayed, the scroll bar position would have been incorrect and the
Overview Marquee Tool would have fluctuated between the inconsistent time
scales. This has been fixed.
A workaround is to use the Marquee Tool, or change the zoom to fix the display,
or disable the Utilization Graph to prevent the problem.
================(Build #3286 - Engineering Case #657979)================
The MobiLink Monitor's Zoom To Selection menu or toolbar button might not
have panned to the selected synchronization until it was used a second time.
This has been fixed.
================(Build #3268 - Engineering Case #653055)================
Any parameters entered on the MobiLink Monitor's command line with a Multibyte
Character Set would have been mangled. This has been fixed.
================(Build #3298 - Engineering Case #660995)================
When connected to a Relay Server, and no Outbound Enabler providing the backend
service had connected yet, the connection was expected to timeout within
the application timeout time specified by the client. However on IIS7, some
J2SE http clients may have become stuck writing to a server that was no longer
reading and eventually failed the write and then perform a delayed internal
retry without processing the response sent by the web server. This change
modifies the Relay Server to provide the expected fail fast experience according
to the timeout against such J2SE clients.
================(Build #3291 - Engineering Case #658710)================
When the Relay Server was being reconfigured, a crash may have occurred in
the rs_client.dll, and all http requests served by the same worker process
would have failed. The web server would then have replenished the worker
pool and the Relay Server would have continued to operate with the new configuration.
The issue is highly timing sensitive and is very difficult to reproduce.
This crash has now been fixed.
================(Build #3284 - Engineering Case #655574)================
The integrated Outbound Enabler library was not being unloaded correctly
when the Mobilink server shutdown. The library eventually unloaded when the
MobiLink server executable exited and no bad side effects where observed
as a result, but this condition is now fixed.
================(Build #3283 - Engineering Case #656716)================
The Relay Server could have leaked heap memory under the following conditions:
- On the response to the first HTTP request in the session, or specifically,
anytime a cookie was set, if the response was long and came in small packets.
- A small number of bytes were leaked on Upchannel and Dnchannel creation.
This has been fixed.
================(Build #3282 - Engineering Case #657026)================
The MobiLInk server would immediately refuse to startup, if it could not
make any connections to the consolidated database, even when it was running
as a Windows service.
This behaviour has changed so that the MobiLink server will retry to make
connections, when it is running as a Windows services. The retries are once
a minutes for ten minutes. If it still cannot make a connection after that,
it will refuse to startup.
================(Build #3267 - Engineering Case #652382)================
The Relay Server did not work with a Relay Server Outbound Enabler (RSOE)
that was behind an HTTP 1.0 proxy. The Relay Server has now been fixed to
adapt to HTTP version downgrades done by an HTTP 1.0 proxy, and is needed
when working with a 12.0.1 RSOE in conjunction with a HTTP 1.0 proxy.
================(Build #3278 - Engineering Case #655989)================
Sybase Central would have crashed whenu attempting to open a Relay Server
configuration file which was zero-length, or that contained only whitespace.
This has been fixed.
================(Build #3273 - Engineering Case #654244)================
On some Chinese Windows systems, the fields for entering the MAC address
for back end servers was too narrow to see both digits of each byte of the
address. This has been fixed.
================(Build #3298 - Engineering Case #650856)================
Synchronizations using HTTP-based communication protocols (including HTTP,
HTTPS and other encrypted HTTP protocols) could have failed intermittently.
When synchronizations failed, they would do so after the download had been
applied and committed, and would have reported an error message like: "Data
read failed. Requested 2 bytes but got 0 bytes." When this occurred
the MobiLink server would have reported the error: "Connection was dropped
due to lack of network activity". These failures were only likely to
occur when applying the download to the remote database took longer than
the stream timeout interval, which is 4 minutes by default. This problem
has now been resolved
================(Build #3278 - Engineering Case #655955)================
Several memory leaks have been fixed in the MobiLink Client.
================(Build #3278 - Engineering Case #655953)================
Several memory leaks have been fixed in the MobiLink client. These leaks
would primarily affect applications using the dbmlsync API.
================(Build #3272 - Engineering Case #653930)================
The Console utility could have stopped refreshing database and/or server
properties after changing the set of properties which were displayed, even
after it was restarted. The problem was sensitive to the speed with which
properties were selected or unselected. This has been fixed.
================(Build #3263 - Engineering Case #651692)================
When a plug-in failed to load on startup, other plug-ins may then not work
correctly. This has been fixed.
================(Build #3275 - Engineering Case #650719)================
After a failed download, an attempt to restart the download may have failed
and reported a "Protocol Error" or a read failure. This has been
fixed.
================(Build #3289 - Engineering Case #658453)================
When using MobiLink synchronization and timestamp-based downloads with an
Oracle Real Application Cluster (RAC) system, there is a chance of missing
rows to be downloaded if the clocks of the Oracle cluster nodes differ by
more than the time elapsed between the MobiLink server fetching the next
last download timestamp and fetching the rows to be downloaded. This problem
is unlikely on a RAC system with synchronized node clocks, but the likelihood
increases with larger node clock differences. A workaround is to create either
a modify_next_last_download_timestamp or modify_last_download_timestamp script
to subtract the maximum node clock difference.
Note that at least since version 10i, Oracle has recommended using Network
Time Protocol (NTP) to synchronize the clocks on all nodes in a cluster,
and NTP typically runs by default on Unix and Linux. With cluster nodes properly
configured to use NTP, their clocks should all be within 200 microseconds
to 10 milliseconds (depending on the proximity of the NTP server). Since
Windows Server 2003, the Windows Time Service implements the NTP version
3 protocol and it runs by default. Also, as of version 11gR2, Oracle Clusterware
includes the Oracle Cluster Time Synchronization Service (CTSS) to either
monitor clock synchronization or, if neither NTP or Windows Time Service
is running, it will actively maintain clock synchronization. However CTSS
and Windows Time Service are less accurate than NTP,
To avoid missing rows when Oracle RAC node clocks differ by up to one second
more than the time between fetching the next_last_download_timestamp and
the rows to be downloaded, now the MobiLink server will subtract one second
from the next_last_download_timestamp fetched from the consolidated database,
if
1) the Oracle account used by the MobiLink server has execute permission
for SYS.DBMS_UTILITY,
2) the consolidated database is an Oracle RAC system,
and (only for MobiLink version 12.0.0 and up)
3) there is no generate_next_last_download_timestamp script.
For Oracle RAC node clocks that may differ by greater amounts, you can avoid
the problem by defining a generate_next_last_download_timestamp, modify_next_last_download_timestamp
or modify_last_download_timestamp script to compensate for the maximum node
clock difference.
================(Build #3286 - Engineering Case #657869)================
If the MobiLink Server's memory use grew more than 4GB in less than 5 minutes,
the TRACKED_MEMORY ppv value would have been incorrect. As a consequence,
for all 12.0.1 platforms and non-Windows 12.0.0 platforms, the MobiLink server
cache could have erroneously shrunk and not recovered. This has been fixed.
A work around is to use a larger -cinit option value, and if the problem
persists to disable dynamic cache resizing by specifying the same value for
-cmax and -cmin.
Also, on 12.0.0 for Windows, the cache could have failed to stabilise.
This has also been fixed.
================(Build #3277 - Engineering Case #655780)================
The method MLResultSet.getBigDecimal(L/java/lang/String;) unnecessarily threw
a 'method not supported' exception. This has been fixed.
================(Build #3273 - Engineering Case #653183)================
The NUM_CONNECTED_SYNCS ppv metric and the "Synchronizations",
"Started Synchronization Rate", "Synchronizations Started",
and "Unknown Connected Clients" metrics incorrectly considered
syncs that had failed during the download and were waiting to be restarted
as being connected and so would show an incorrect value in the log or in
the SA Monitor. Also, as a consequence, the server would prompt for confirmation
to kill active syncs during hard shutdown even if all the syncs in the system
are waiting to be restarted. This has been fixed.
================(Build #3265 - Engineering Case #652263)================
The usage text for the Relay Server Outbound Enabler didn't describe what
were the valid options for the -cr option. This has been corrected so that
the values are now listed for the tcp options, server certificate options,
and client certificate options.
In addition, http authentication options, proxy options, and proxy authentication
options, have been added in version 12.0.1.
================(Build #3153 - Engineering Case #660428)================
The MobiLink server could have crashed during shutdown if user spawned Java
threads printed to System.out or System.err after the ShutdownListeners were
notified of shutdown. This has been made much less likely to happen. A work
around is to ensure all user threads are stopped before the ShutdownListeners
return.
================(Build #3292 - Engineering Case #657721)================
There was a memory leak in the iAS ODBC driver for Oracle. The memory leak
would have occurred when an application tried to make a connection but the
ODBC driver was not able to obtain a valid database connection. This problem
has now been fixed.
================(Build #3284 - Engineering Case #657397)================
When the consolidated database was running on an Oracle server, the MobiLink
server could have displayed the error: 'ORA-00001: unique constraint ...
violated' and then refused further synchronization requests. This would have
occurred when the MobiLink server schema in the consolidated database was
upgraded from a version earlier than 11.0.0, and the synchronization request
was for a new MobiLink user and/or MobiLink remote database.
This problem has been fixed in the upgrade scripts for Oracle.
The following steps can be used to correct the problem if the Oracle consolidated
database had already been upgraded with the old upgrade scripts:
1) Shut down all MobiLink servers;
2) Execute the SQL file against the Oracle consolidated database with the
following command line:
sqlplus LoginID/Password@TNSServerName @%SQLANY12%\MobiLink\Upgrade\fix_ora.sql
Replace the LoginID, Password, and TNSServerName in the above command line
with your own login information.
================(Build #3286 - Engineering Case #657542)================
The results of an Entity DAta Model query could have been non-deterministic.
For example, having a GridView with the properties "AllowPaging"
and "AllowSorting" set to "True", would have returned
a "Result is non-deterministic" warning (SQLCODE 122). This has
been fixed by adding an ORDER BY clause to the generated SQL.
================(Build #3280 - Engineering Case #656481)================
An application using the ADO .Net provider, and calling the method SAConnection(),
could not have successfully connected to an IQ 12.7 server. A run-time error
(iAnywhere.Data.SQLAnywhere.SAException) would have occurred when the provider
tried to parse the server version string. This problem has been resolved.
================(Build #3276 - Engineering Case #654446)================
If there were multiple applications running simultaneously, the ADO.NET provider
could have failed to load dbdata.dll. This has now been fixed.
================(Build #3297 - Engineering Case #660204)================
Specifying a TCP timeout value of more than 2147 seconds could have caused
connection failures. This has been fixed.
================(Build #3294 - Engineering Case #659643)================
An application could have crashed if it was attempting an Integrated Login
or Kerberos connection and the connection to the server was lost. This could
have occurred if the server was stopped or terminated during the connection.
This has been fixed.
================(Build #3286 - Engineering Case #657826)================
When using the Microsoft ODBC Data Source Administrator, a crash may have
resulted if an encrypted password had been specified and the "Test Connection"
button was used. This has been fixed.
================(Build #3267 - Engineering Case #652752)================
When starting dbisqlc, or an ODBC application with a connection string containing
LINKS=TCPIP, if there is an error connecting the connection dialog is displayed.
It was incorrectly defaulting to "connect to a running database on another
computer", losing the LINKS=TCPIP setting. If TCP parameters were specified,
such as LINKS=TCPIP(PORT=2638), then it worked correctly. This has now been
fixed.
================(Build #3291 - Engineering Case #658887)================
The OLE DB DBSCHEMA_FOREIGN_KEYS rowset returned the following indicated
integer values for the UPDATE_RULE or DELETE_RULE referential actions.
CASCADE 0
if referential action is NULL 1
SET NULL 2
SET DEFAULT and RESTRICT 3
These values, derived from the ODBC SQLForeignKeys result set, did not match
the following OLEDB constants defined for these referential actions.
DBUPDELRULE_NOACTION = 0x0
DBUPDELRULE_CASCADE = 0x1
DBUPDELRULE_SETNULL = 0x2
DBUPDELRULE_SETDEFAULT = 0x3
Furthermore, the DBSCHEMA_FOREIGN_KEYS rowset should have returned strings
rather than integers for the UPDATE_RULE or DELETE_RULE referential actions.
The OLE DB specification states:
If a rule was specified, the UPDATE_RULE or DELETE_RULE value is one of
the following:
"CASCADE" — A <referential action> of CASCADE was specified.
"SET NULL" — A <referential action> of SET NULL was specified.
"SET DEFAULT" — A <referential action> of SET DEFAULT was
specified.
"NO ACTION" — A <referential action> of NO ACTION was specified.
Providers should return NULL only if they cannot determine the UPDATE_RULE
or DELETE_RULE. In most cases, this implies a default of NO ACTION.
Also, the fix for Engineering case 620136 did not handle the situation when
there was no declared Primary Key in the primary table but there were table
or column (not nullable) Unique Constraints that permitted the addition of
foreign keys.
These problems have been fixed. The Upgrade utility should be used to update
the OLE DB schema rowset support in any database used with ADO, ADOX or OLE
DB.
================(Build #3266 - Engineering Case #651383)================
As of the changes for Engineering case 633120, a SQL query producing multiple
result sets was not handled correctly by the SQL Anywhere OLE DB provider.
This problem has now been corrected. The cursor is no longer closed after
the first result set is processed.
================(Build #3298 - Engineering Case #661242)================
A silent install of SQL Anywhere Monitor in which the location of the database
(DIR_SQLANY_MONITOR) was not specified, would have caused the database to
be installed to %SystemDrive%\CommonDocFolder. This has been fixed so that
the correct default location is now used (%ALLUSERSPROFILE%\Documents\SQL
Anywhere Monitor 12).
================(Build #3298 - Engineering Case #661188)================
The 64-bit UltraLite ODBC driver (Bin64\ulodbc12.dll) was not being correctly
registered. This would have resulted in the failure of Interactive SQL and/or
Sybase Central to load an UltraLite database. The has been fixed.
Alternatively, the driver can be registered manually using the following
command:
regsvr32.exe %SQLANY12%\Bin64\ulodbc12.dll
================(Build #3295 - Engineering Case #660190)================
The folder names under %SQLANYSAMP12%\UltraLiteJ\Android\CustDB used mixed
case and in some cases were incorrect in the GA release of 12.0.1. This
caused Eclipse to fail when building the sample. This has been fixed such
that future remastered releases will use the correct case. However, EBF
installs will not fix these incorrect folder names. A workaround is as follows:
Before attempting to build the sample in Eclipse, ensure that the sub-directory
names are as show below. Note that all names are lower case and that hyphens
(-) should be used, not underscores (_), where applicable.
libs
res
src
libs\armeabi
res\drawable-hdpi
res\drawable-ldpi
res\drawable-mdpi
res\layout
res\menu
res\values
src\com
src\com\sybase
src\com\sybase\custdb
================(Build #3281 - Engineering Case #659357)================
Running the Deployment wizard when SQL Anywhere had been installed to directory
with a path containing multi-byte characters would have caused the generation
of the MSI to fail with an error like: "C:\Syç¾ç½²\SQL Anywhere 12\bin32\dblib12.dll
(Not Found)". This has been fixed.
================(Build #3298 - Engineering Case #661034)================
Under rare conditions, the server could have hung while executing a query
with multiple GROUP BY clauses. This may have occurred when the workload
executing on the server suddenly changed (i.e. if many requests arrived almost
simultaneously). This has been fixed. A workaround is to disable intra-query
parallelism for the affected query (SET TEMPORARY OPTION MAX_QUERY_TASKS=1).
================(Build #3297 - Engineering Case #661036)================
Activity executing on the utility_db could have caused a crash, memory corruption,
or other unpredictable behaviour, if the cache were to shrink at the same
time. This problem has been fixed.
================(Build #3297 - Engineering Case #660629)================
When connected to an ASE 15.5 server and attempting to make a remote request
to SQL Anywhere, there was a chance the request would have failed with an
"unkown token 35" error. This problem has now been fixed.
Note that this problem only affected remote requests from ASE to SQL Anywhere.
The problem did not affect making remote requests from SQL Anywhere to ASE
via Remote Data Access.
================(Build #3297 - Engineering Case #660446)================
Performing a backup with a TRANSACTION LOG RENAME would have caused read-only
connections to the database on the mirror server to be dropped. This has
been fixed.
================(Build #3297 - Engineering Case #658330)================
Execution of an INSERT ON EXISTING UPDATE statement, with CASCADE as the
foreign key update option, would have resulted in a foreign key constraint
violation error when updating values which were logically the same, but had
different physical representation. For example, in case insensitive database
changing 'EMPLOYEE' to 'employee'. This has been fixed.
================(Build #3296 - Engineering Case #660432)================
Creating a variable with an initial value specified as a host variable did
not give a syntax error in some cases. This has been fixed.
================(Build #3296 - Engineering Case #660248)================
If an application connected via jConnect or Open Client and made an external
environment call that returned a result set, then the server may have crashed.
This problem has now been fixed.
================(Build #3296 - Engineering Case #659870)================
Empty string values indexed by an IMMEDIATE text index were not counted towards
the total number of documents indexed, unless more than one column was indexed
and the value in at least one of the columns was neither an empty string
nor NULL. This problem caused scores for full text queries to be lower then
they should have been if all the documents were correctly counted. Additionally,
a memory leak could have occurred in this situation. This has been fixed.
Note, if a text index was created or updated using a server with this problem,
it may be necessary to rebuild the index with an updated server if problems
are encountered with the index.
================(Build #3295 - Engineering Case #660235)================
On Windows Vista and later operating systems, whenever a new server executable
had to be launched in order to autostart a database, launching the executable
may have failed when a relative path to the server executable was specified.
For example, dbspawn mybin\dbsrv12.exe -n myserver my.db, or using "...;start=mybin\dbsrv12.exe..."
in a connection string, could have fail to launch the server executable.
This problem has been fixed.
================(Build #3295 - Engineering Case #660211)================
In rare circumstances, calling the system procedures sa_locks, sa_describe_shapefile,
st_geometry_dump, sa_list_cursors, or sa_mirror_server_status, could have
caused the server to crash, or could have caused unpredictable behaviour.
The problem was more likely to have occurred when small cache sizes were
used. This problem has been fixed.
================(Build #3295 - Engineering Case #660194)================
Execution of a query on a Directory Access proxy table with a WHERE clause
that contained a predicate of the form "file_name = variable",
may have sometimes run very slowly while running very quickly most other
times. This problem has now been fixed such that the query performance is
now consistently fast from one run to the next.
================(Build #3295 - Engineering Case #660057)================
If a foreign key was created with both MATCH and CHECK ON COMMIT clauses,
and the database subsequently required recovery, recovery would have failed
when replaying the statement from the transaction log. This has been fixed.
================(Build #3295 - Engineering Case #652949)================
The trigger operation condition 'UPDATE( {column-name} )' did not return
TRUE if the column value had been changed by a previously running BEFORE
UPDATE row-level trigger only. This has been fixed.
================(Build #3295 - Engineering Case #652244)================
An internal unload/reload (i.e. dbunload -ii) that encountered a SQL error
could have hung or caused a subsequent unload/reload on the same server to
hang. This problem has been fixed.
================(Build #3294 - Engineering Case #659804)================
If a proxy table or proxy procedure was defined with variables in the AT
clause, then the AT clause would have been incorrectly truncated if the length
of the AT clause after variable expansion was greater than the length of
the original AT clause. This problem has now been fixed.
================(Build #3294 - Engineering Case #659639)================
When making a Java external environment call, if the stored procedure had
an argument of type char (note that this is a single char value rather than
a java.lang.String), and a NULL value was passed in for the char argument,
then the server would have failed the request with a Java NullPointerException.
It should be noted that the Java VM would have continued to run in this situation
and the connection was still able to make subsequent Java external environment
calls. This problem has now been fixed such that passing a NULL char value
to a Java external environment call will result in a char with zero value
being passed down to the Java method. Again, it should be noted that this
problem does not affect passing NULL string values to java stored procedures.
================(Build #3294 - Engineering Case #659631)================
If an application enlisted a connection within a DTC transaction and then
subsequently attempted to perform a DTC commit on the transaction after explicitly
unenlisting it first, then the application would have hung until the server
was shut down. This problem has now been fixed and the commit request will
now immediately fail as expected.
================(Build #3294 - Engineering Case #659370)================
Inlining of simple functions could have generated unexpected errors or incorrect
results. For incorrect results to have occurred, the caller of the function
had to have variables defined with the same names as the inlined function.
This has been fixed.
================(Build #3294 - Engineering Case #613299)================
Queries involving indexes could return incorrect results, and using tools
such as the Validate Database Wizard in Sybase Central, or the Validation
utility, could have reported index corruption when there was in fact none.
For this to have occurred, the index must not have been unique and there
must be many consecutive rows with the same indexed value. This has been
fixed.
================(Build #3292 - Engineering Case #658985)================
Unexpected deadlocks could have occurred when using the UPDLOCK hint at isolation
level 3. For example, if two transactions issued the statements
SELECT t.c FROM t WITH (UPDLOCK) WHERE t.pk = 1
UPDATE t SET c = 2 WHERE t.pk = 1
concurrently at isolation level 3, a deadlock would have occurred if both
connections managed to issue the SELECT before either issued the UPDATE.
This has been fixed.
================(Build #3292 - Engineering Case #658849)================
If an application on a Unix system attempted to make a TCP/IP connection
to a server that was not running, the connection attempt may have failed
with error code -832 "Found server but communication error occurred".
This has been fixed, the correct error code should be
-100 "Database server not found".
================(Build #3291 - Engineering Case #657823)================
The fix for Engineering case 620136 did not handle the situation where there
was no declared Primary Key in the primary table but there were table, or
column, (not nullable) Unique Constraints that permit the addition of foreign
keys. This problem has been corrected.
================(Build #3290 - Engineering Case #658114)================
The server would have crashed if a SELECT statement useed the FOR XML EXPLICIT
clause, and a null value was used for the CDATA directive. This has been
fixed
================(Build #3290 - Engineering Case #656998)================
Remote queries with many aliases in grouped derived tables may have taken
a long time to execute. This has been fixed.
================(Build #3289 - Engineering Case #657621)================
If a server (S2) acting as mirror saw a dropped connection to the primary
server (S1) after a temporary network outage, it could have attempted to
become primary while S1 was still running. S2 would then have failed during
startup because S1 still owned the alternate server name for the database.
This error would also have caused S2 to shut down. If S1 needed to restart,
it would have been unable to take ownership of the database because S2 was
unavailable and the arbiter's state had been updated to indicate that S2
was the owner.
Also, when a server acting as primary (S1) accepted an inbound connection
from the mirror (S2), S1 attempted to make an asynchronous outbound connection
to S2 if one did not already exist. If this connection attempt failed, S2
would have failed to receive updates from S1.
These problems have now been fixed.
================(Build #3288 - Engineering Case #658302)================
If many contiguous index entries were removed from an index with no intervening
inserts, concurrent snapshot transactions could have seen incorrect results,
and in rare circumstances, foreign rows could have been added without matching
primary rows. This has been fixed.
================(Build #3287 - Engineering Case #658189)================
If a copy node (S3) was starting just as its intermediate node parent (S2)
was receiving pages from the root (S1), S3 could have failed to receive some
of the pages and would have reported a corrupt transaction log file. This
has been fixed.
================(Build #3287 - Engineering Case #658130)================
SQL Anywhere web client procedures were not able to proxy https requests.
This has been fixed.
The following example routes an https request destined for 'securehost'
(default port 443) through a proxy host named 'squid' listening on port 8080:
create or replace procedure test()
URL 'https://securehost/service'
TYPE 'HTTP:GET'
PROXY 'http://squid:8080';
================(Build #3287 - Engineering Case #658121)================
On some Windows machines, attempting to make a TCP connection to a Personal
Server on the same machine may have failed. This has been fixed.
================(Build #3287 - Engineering Case #657987)================
The server could have crashed, or failed assertion 200114, when processing
a LIKE predicate. This has been fixed.
================(Build #3287 - Engineering Case #657812)================
A number of read-only scale-out issues have been fixed.
1) The server could have crashed or otherwise failed in rare cases when
one or more read-only scale-out children were added to a node. This could
have occurred if one node was stopped or restarted.
2) If a parent node was restarted and had a lower log offset than it's child,
the child could have shutdown with the message "Database server shutdown
due to incompatible files for database mirroring." Restarting the child
node after the parent caught up to primary would succeed. Now the child node
no longer stops and the child node will start applying log changes once its
parent gets to a higher log offset.
3) If a parent copy node was started with child nodes already running, a
child node and possibly other nodes could have hung.
4) If a copy node was connected to it's alternate parent, and then it's
alternate parent stopped, the copy node may have stopped applying updates.
The copy should have connected to the primary server to receive updates but
was actually not receiving updates. Note that sa_mirror_server_status may
show that the node which is not receiving updates is connected, when in fact
it was not. Now the copy node will connect to the primary server if neither
the parent nor alternate parent servers are available.
5) An ALTER MIRROR SERVER statement that only changed the alternate parent
was ignored until the server being altered was restarted. For example, if
ServerC had parent ServerB:
ALTER MIRROR SERVER 'ServerC' AS COPY FROM SERVER 'ServerB' OR SERVER
'ServerA'
was ignored by ServerC until it was restarted. Now the alternate parent
is effective on the server being altered once it has applied the log offset
with the ALTER MIRROR SERVER statement.
6) Attempting to SET MIRROR OPTION auto_add_server to the alternate server
name for the primary server incorrectly resulted in an error.
7) If read-only scale-out copy nodes had a primary server as their root
node, and the primary server failed over to the mirror server, then all client
connections to all copy nodes were incorrectly dropped.
================(Build #3285 - Engineering Case #657520)================
In very rare cases, the server asserts with assertion error 102300 "File
associated with given page id is invalid or not open" if request level
debugging is turned on and includes plan logging and there are schema changes
around. This has been fixed. To work around the problem plan caching can
be turned off (option Max_plans_cached = 0) or plan logging can be turned
off (switch -zr without "plan" and "all").
================(Build #3285 - Engineering Case #654801)================
The SQL Anywhere Optimizer may have incorrectly pruned, without costing,
optimal plans during query optimization. This has been fixed. This incorrect
pruning would most probably have affected the final execution plans for
complex, but inexpensive (i.e., the optimal plan has a small runtime) queries.
================(Build #3284 - Engineering Case #657586)================
If a call was made to the Java external environment, and the stored procedure
had an argument of type tinyint and a NULL value was passed in for the tinyint
argument, then the server would have failed the request with a NullPointerException.
It should be noted that the Java VM would continue to run in this situation
and the connection was still able to make subsequent Java external environment
calls. This problem has now been fixed such that passing a NULL tinyint value
to a Java external environment call will result in a byte with zero value
being passed down to the Java method.
================(Build #3284 - Engineering Case #656691)================
If a query was rewritten by the optimizer to use a materialized view, the
query would incorrectly have returned zero rows if a spatial predicate was
applied to the rows originating from the view. This has been fixed.
================(Build #3283 - Engineering Case #656828)================
Adding the CHECK IMMEDIATE REFRESH clause to a CREATE MATERIALIZE VIEW statement
would have caused the server to crash. This has been fixed.
================(Build #3283 - Engineering Case #656264)================
When connected to a database that had the same character set as the OS, and
a query like the following was executed:
SELECT ... FROM dirtab WHERE file_name = '...'
where dirtab was a directory access table and the file_name string literal
contained non-ASCII characters, there was a chance the server would have
crashed. This problem has now been fixed.
================(Build #3282 - Engineering Case #656847)================
If a derived table was joined with the rest of the query using a Join Nested
Loops operator, the performance of the query may have suffered when the derived
table had to be computed many times due to many rows generated by the left
hand side of the Join Nested Loops. The optimizer was choosing such a plan
if the estimated number of rows of the left hand side was very small. If
this estimation was wrong (e.g., the optimizer estimates one row for the
left hand side but in reality the left hand side produces 1,000 rows), the
derived table was computed many, many times during execution. This has been
fixed so that the optimizer considers only Join Hash or Join Sort Merge operators
for the derived tables if it is correct to do so.
================(Build #3282 - Engineering Case #656839)================
If an INSERT or UPDATE statement affecting the value of a spatial column
was canceled, or a run-time error was encountered during execution, there
was a possibility that the server would have failed assertion 112701: "Failed
to convert geometry to EWKB for the redo log -- transaction rolled back [-301]
['40W01']". This has been fixed.
================(Build #3281 - Engineering Case #656650)================
The system procedure sa_db_list() did not validate its database id parameter
if the value was a positive integer. This would have resulted in a single
row result set containing the value provided. Now, if the value is not a
valid database id, the procedure will return an empty result set.
================(Build #3281 - Engineering Case #655981)================
Values for the ApproximateCPUTime property is never expected to decrease
between calls, as it represents an estimate of accumulated CPU time for a
connection. However, for connections that had accumulated approximately
1000 seconds of CPU time, the counter could have periodically receded by
approximately 400 seconds.
================(Build #3279 - Engineering Case #656272)================
The INSERT ON EXISTING SKIP statement did not report the correct number of
inserted and
updated rows using @@rowcount and sqlcount. This has now been corrected.
================(Build #3279 - Engineering Case #655749)================
Execution of an INSERT ... ON EXISTING SKIP statement did not report the
correct number of inserted and updated rows using @@rowcount and sqlcount.
This has been fixed
================(Build #3279 - Engineering Case #654294)================
When canceling a query involving spatial operations, there was a small probability
the server could have crashed, or failed to release resources. This has been
fixed.
================(Build #3278 - Engineering Case #655972)================
The fix for Engineering case 636018 missed a case, which has now been corrected.
Description of case 636018:
Queries involving indexes containing long values could have returned incorrect
results. Index corruption was possible, but not likely..
================(Build #3278 - Engineering Case #654938)================
In rare cases, a corrupt TCP packet could have caused the server to crash.
The server now validates the packet header before do anything with the packet.
If it is corrupt, the packet is dropped.
================(Build #3277 - Engineering Case #655533)================
Under rare circumstances, inserting the result from the Round Earth linestring()
function, or using the linestring() function in a query, could have crashed
the server, if the line string crossed the equator. This has been fixed.
================(Build #3275 - Engineering Case #654790)================
In very rare cases, the server may have crashed with a floating point exception
when slightly loaded. This has been fixed.
================(Build #3273 - Engineering Case #654284)================
The server could have crashed if the STOP SERVER or STOP ENGINE statement
was called from an event or HTTP connection. This has been fixed.
Note that the 'STOP SERVER' syntax is new to version 12 (older servers support
'STOP ENGINE').
================(Build #3273 - Engineering Case #654259)================
The changes for Engineering case 650489 may have caused execution remote
procedure calls to an ASE remote server to fail with a strange "unchained
transaction mode" error. This problem has now been fixed.
================(Build #3272 - Engineering Case #653591)================
Attempting to attach tracing to an older version database file could have
caused the server to crash. This has been fixed so that attempting to attach
tracing to an older version file now returns the error "ATTACH TRACING
could not connect to the tracing database" (-1097).
================(Build #3272 - Engineering Case #556778)================
The return values of the built-in functions user_id() and suser_id() may
have incorrectly been described as not nullable even if the function argument
was not nullable. This may have lead to the assertion error 106901 "Expression
value unexpectedly NULL in write". This has been fixed so that the functions'
results are always described as nullable.
================(Build #3270 - Engineering Case #653245)================
The value for the column "columns" for the system view SYS.SYSFOREIGNKEYS
is generated using a LIST() function, but the function did not include an
ORDER BY and so the result returned could have varied. This has been fixed
by adding an ORDER BY clause.
Note, the system view must be recreated by upgrading or rebuilding the database
for the new view definition to be used.
================(Build #3270 - Engineering Case #652911)================
If an INSTALL JAVA UPDATE statement was executed to update an existing java
class, the server would have incorrectly added a new system object id rather
than reuse the already assigned object id. This problem has now been fixed.
================(Build #3269 - Engineering Case #653590)================
Diagnostic tracing, or application profiling to LOCAL DATABASE could not
be used when the server was started with the command line option -sb 0 (disable
broadcast listener). This has been corrected. A workaround is to manually
supply a connection string (ATTACH TRACING TO <connstr>) with the DoBroadcast=NO
option, rather than using the LOCAL DATABASE clause.
================(Build #3269 - Engineering Case #653588)================
If tracing was suddenly detached (because, for example, the server receiving
the tracing data was shut down) at the same time as a deadlock occurred,
a deadlock victim may have failed to write a ROLLBACK to the transaction
log. This may have lead to an incorrect partial commit of a deadlocked transaction.
This has been fixed. This problem is expected to be very rare.
================(Build #3269 - Engineering Case #635956)================
A query with a CUBE, ROLLUP, or GROUPING SETS clause and HAVING predicates
may have returned an incorrect result set. The query must not have had any
aggregate functions, and the grouping sets must have contained the grand
total which should have been filtered by the HAVING predicates, but instead
it was returned as a valid row.
For example:
select n_comment from nation group by cube (n_comment) HAVING n_comment
like 'alw%';
The result set would have contained all the rows with n_comment for which
the predicate "n_comment LIKE 'alw%' is TRUE, but also the row "(NULL)".
This has now been fixed.
================(Build #3268 - Engineering Case #652592)================
Attempting to connect to a read-only scale-out database with a non-ASCII
database name using the NODETYPE connection parameter could have incorrectly
failed with a "Specified database not found" error. The database
name was being sent back in either OS-charset or DB-charset, but the client
needed it to be in client-charset. This has now been fixed.
================(Build #3267 - Engineering Case #652791)================
If a statement for a directory access table failed with the error SQLSTATE_OMNI_REMOTE_ERROR,
and this statement was the last statement of the transaction then all subsequent
remote server statements of this connection would have failed with the same
error. This has been fixed.
================(Build #3267 - Engineering Case #652759)================
If a table was included in a MobiLink publication and one or more options
were defined for that publication, but there were no synchronization subscriptions
defined, the table could not be ALTERed to, for example, add a new column.
This has been fixed.
================(Build #3267 - Engineering Case #652756)================
When validating a table that contained spatial data on 32-bit x86 systems
where the processor did not support the SSE2 instruction set (the minimum
required for SA spatial features), the database server would have reported
a non-fatal assertion error
113300 or 113302 "failed to build cursor to validate". This problem
has been fixed and the underlying error is now reported: SQL error (-1515)
-- Support for spatial is not available for this CPU.
================(Build #3267 - Engineering Case #651294)================
When starting a 32-bit server with a large initial number of request tasks
(-gn option), the server could have failed to start by reporting an error,
crashing or quietly exiting. This problem has been fixed by reducing the
maximum cache size to accommodate the address space needed for the stacks
of the request tasks.
================(Build #3266 - Engineering Case #652587)================
When running a database without a transaction log, performance could have
been significantly slower than in previous versions. This problem has been
corrected. See Engineering case 608904 for a similar issue..
================(Build #3266 - Engineering Case #652543)================
The server may have crashed during inserts into a view, if the view column
was not a base table column. This has been fixed. Now the correct error SQLSTATE_NON_UPDATEABLE_VIEW
is returned.
================(Build #3265 - Engineering Case #651694)================
If the connections between servers in a mirroring system used encryption,
the primary server could have hung when performing an operation which required
exclusive access to the database (e.g. a checkpoint) if other update activity
was also occurring. This has been fixed.
================(Build #3264 - Engineering Case #652107)================
If a foreign key had both ON UPDATE and ON DELETE actions, renaming a column
referenced by the foreign key could have caused one of the system triggers
to be deleted and the other to be left unchanged. A trigger for an ON UPDATE
action could have been converted to an ON DELETE action. This has been fixed.
================(Build #3264 - Engineering Case #651846)================
On Windows systems, the performance monitor might not have displayed counter
values provided by the server. Typically this would have happened when a
shared memory client that was attached to the server terminated abnormally.
Counter values should not display for subsequent servers until all processes
holding handles to the dead server (e.g. shared memory clients) are terminated.
This has been fixed.
================(Build #3263 - Engineering Case #651658)================
On Windows systems, SQL Anywhere provides a version 1 (registry) performance
provider. Windows should generate WMI classes automatically after the counter
dll is registered, but these classes were generated only after instances
of these objects (i.e. server, database and connection) existed in a process
running in session 0 (i.e. as a service in Vista and up). This has been
fixed.
================(Build #3262 - Engineering Case #651323)================
When the distance between two ST_Points exceeded the spatial reference system's
tolerance by at least a factor of 1, but less than a factor of sqrt(2), the
spatial relations ST_Equals and ST_Intersects could have incorrectly returned
TRUE. This has been fixed.
================(Build #3262 - Engineering Case #651169)================
If a database containing a table with a uniqueidentifier column was unloaded
using the Unload utility (dbunload) with one of the external unload options
(-xi or -xx), and the resulting reload.sql script was executed using the
Interactive SQL utility, a conversion error would have been reported. This
has been fixed. A workaround is to avoid using -xx or -xi when rebuilding
the database.
================(Build #3262 - Engineering Case #650337)================
Queries with an outer join having the same base table as the preserved and
null-supplying sides could have returned incorrect result sets. Conditions
where this could happen:
1. the outer join is of the form : T as T1 LEFT OUTER JOIN T as T2 ON(p)
2. the ON predicate p has only equijoins, and at least two equijoins
3. p is of the form : T1.c1 = T2.c1 and T1.c3 = T2.c2
4. there exists an unique index on T < c1,c2>
This has been fixed.
================(Build #3261 - Engineering Case #650740)================
Execution of a DROP DATABASE statement would have failed if the automatically
generated database alias name was an invalid identifier. This has been fixed.
================(Build #3261 - Engineering Case #650690)================
The server would have returned assertion failed 100905 "Articles on
the table use do not match those on the table definition", if a table
had publications and a simple INSERT with multiple row value constructors
was executed. For example: insert into tab1 values (1,'a'),(2,'b'). This
has been fixed.
================(Build #3153 - Engineering Case #647077)================
When run on Mac OS X systems, the server would have exited with the error
"Failed to
become daemon" if both the -um and -ud command line options were specified.
This was due
to a limitation in the OS X GUI infrastructure. This has been fixed. The
-um flag is now ignored if -ud is specified.
A workaround is to use dbspawn instead of -ud.
================(Build #3297 - Engineering Case #660656)================
After updating an external environment object via File->Update..., the
object's Contents tab would not always have reflected the changes made to
the object. This has been fixed.
================(Build #3292 - Engineering Case #659177)================
If a non-initialized materialized view or text index was selected in the
tree and the Data tab was selected in the right-pane, then attempting to
switch from one mode (Design, Debug or Application Profiling) to another
would have caused a refresh of the materialized view or text index to be
prompted for twice. This has been corrected so that there is now only one
prompt.
================(Build #3279 - Engineering Case #656454)================
When connected to a database that contained one or more publications, and
the property sheet for a Publication was opened and an Article was selected
in the "Subscribe by restriction" tab, the Editor pane at the bottom
of the tab would have been disabled except when the 'expression' radio button
was checked. When the Editor pane was disabled it was still possible to right
click on it to reveal a pop-up menu that allowed for search and replace in
the box. The menu is now disabled when the Edit pane is disabled.
================(Build #3278 - Engineering Case #655945)================
On the database Fragmentation tab, the shortcuts for Zoom In (Ctrl++) and
Zoom Out (Ctrl+-) did not work with the numeric keypad. This has been fixed.
================(Build #3278 - Engineering Case #644464)================
If a database had two or more 'post_login_procedure' option settings, then
attempting to connect to the database would have failed with a "Subquery
cannot return more than one row" error. This has been fixed.
================(Build #3273 - Engineering Case #654249)================
The External Environments folder was erroneously including an entry for dbmlsync.
This has been fixed.
================(Build #3266 - Engineering Case #652547)================
Altering the schedule for an event to remove a days-of-month specification
did not set SYSSCHEDULE.days_of_month to null. This has been fixed.
================(Build #3264 - Engineering Case #651520)================
Displaying the results of an Index Consultant run of a large workload could
have required an excessive amount of memory, causing Sybase Central to crash
if there was not enough physical memory available. This has been fixed.
================(Build #3262 - Engineering Case #651723)================
Opening a column's Property sheet would have caused the error: "Support
for spatial is not available for this CPU", when the server was run
on a system with on a Pentium III processor. The same error would also have
occurred in the Function and Domain wizards, and the Spatial Reference Systems
folder if it was selected in the tree. These issues have been fixed.
================(Build #3295 - Engineering Case #660005)================
If a file was opened in the Interactive SQL utility and then the window was
closed, the file would still have been locked by the dbisql process if the
"Enable fast launcher" option was on. This has been fixed.
================(Build #3292 - Engineering Case #659337)================
SQL changes in the Plan Viewer and Spatial Viewer windows were ignored if
the Editor component had been selected, "Options" was clicked and
then dismissed by clicking "OK". This has been fixed.
This issue had at least one other symptom: If a file was opened, "Options"
for the editor was selected, either by right-clicking as described above
or by opening the Options window, then clicked "OK", subsequent
changes in the Editor would not have caused the Interactive SQL utility's
window title text to include an asterisk. The asterisk indicates that there
are unsaved changes in the editor.
================(Build #3292 - Engineering Case #659140)================
The text completer may not have suggested any matches if there was an empty
single quoted string earlier in the statement, or in a previous statement.
This has been fixed.
================(Build #3289 - Engineering Case #658334)================
If a database option value contained a single quote, the reload script generated
by the Unload utility would have resulted in a syntax error when the database
was reloaded. This has been fixed.
================(Build #3286 - Engineering Case #653316)================
When deleting rows from an UltraLite database, the Interactive SQL utility
would have incorrectly reported the number of rows affected by a DELETE.
The message "1 row(s) deleted" would have been shown in the Message
pane, regardless of how many rows were deleted. This has been fixed.
================(Build #3285 - Engineering Case #657324)================
Installations created by the Deployment wizard were to be missing the following
files from the assembly\v2\ directory:
iAnywhere.Mobilink.Client.dll
iAnywhere.QAnywhere.Client.dll
iAnywhere.QAnywhere.Resources.dll
iAnywhere.QAnywhere.ws.dll
These files were being installed in the Global Assembly Cache (GAC), but
an additional copy was not also put in the assembly\v2 directory. This has
been corrected so that these files are now installed in both locations.
================(Build #3281 - Engineering Case #658169)================
When using the Service utility (dbsvc) for Linux to create an automatic service
(when the machine boots) on Linux SUSE 11 for the SQL Anywhere server, the
server may have started before the network service had been started. As a
result, some applications running inside the SQL Anywhere server may have
failed to work properly. This issue would have affected SQL Anywhere Server
Monitor deployments. This has been fixed.
================(Build #3281 - Engineering Case #656897)================
Attempting to execute a SQL statement that was made up only of full-width
space characters (U+3000, the "Ideographic Space") would have caused
the Interactive SQL utility to crash. This has been fixed.
================(Build #3278 - Engineering Case #637456)================
Attempting to import NCHAR types from ASE using the INPUT statement or the
Import Wizard, would have failed with the message "Cannot convert ''
to a varbit". This has been fixed.
================(Build #3278 - Engineering Case #631019)================
Two issues relating to using the INPUT and OUTPUT statements (and their corresponding
wizards) to move data between SQL Anywhere and ASE have been fixed.
Importing a table from ASE which had TIMESTAMP columns into a new table
would have failed. The ASE TIMESTAMP type was being misinterpreted as being
equivalent to the SQL Anywhere TIMESTAMP type, which is false.
Exporting data from SQL Anywhere into ASE would have reported various conversion
issues for SQL Anywhere DECIMAL values.
================(Build #3277 - Engineering Case #655607)================
The text in the Favorites sidebar could have disappeared if the mouse was
moved over it. This has been fixed.
================(Build #3275 - Engineering Case #654981)================
The Console utility could have stopped refreshing connection properties after
changing the set of properties which were displayed, even after restarting
DBConsole. This has been fixed.
================(Build #3274 - Engineering Case #654636)================
Opening a .saplan file in the "Plan Viewer" window and clicking
the "Print" button did not do anything. This has been corrected
so that it prints the plan. There was no problem printing plans which were
generated by clicking the "Get Plan" button.
================(Build #3274 - Engineering Case #654635)================
If HTMLHelp documentation for SQL Anywhere was installed, it was possible
for the Index Consultant to open DCX help under some circumstances. This
has been fixed.
================(Build #3274 - Engineering Case #654425)================
In the Options window, the components for editing the quitting time were
enabled even if the "Quitting time" checkbox was not checked. Now,
the components are disabled when the checkbox is not checked.
================(Build #3274 - Engineering Case #654253)================
In versions of the Interactive SQL utility 10.0.0 and later, using an ISQL
parameter for the value of an option in a SET OPTION statement did not work
because the parameter was not substituted correctly. This has been fixed.
================(Build #3270 - Engineering Case #653743)================
The Import wizard would have reported an internal error when importing a
shapefile if no spatial reference system was selected. This has been fixed.
================(Build #3297 - Engineering Case #660813)================
If the database was blank padded and the database option Compression was
set to be -1, .SQL Remote would have logged the following warning message
in its output file:
Option DBA.Compression contains invalid value -1
The value -1 is a valid value, it was the blank padding that was causing
the option to be treated as invalid. This problem has been fixed.
================(Build #3278 - Engineering Case #656093)================
The Log Translation utility (dbtran) and SQL Remote could left temporary
files undeleted after execution. This has been fixed.
================(Build #3277 - Engineering Case #655351)================
Temporary files created by SQL Remote and Log Translation utility may not
have been deleted. This problem has been fixed.
================(Build #3295 - Engineering Case #660263)================
Incorrect results were possible for a deeply nested (at least a depth of
three) aggregate subquery. This has been corrected.
================(Build #3295 - Engineering Case #659922)================
A syntax error could have been incorrectly generated for an outer reference
occurring in a subquery containing another nested subquery, where the outer
reference was to the right of the nested subquery. This has been corrected.
================(Build #3292 - Engineering Case #659615)================
Some internal optimization algorithms have been generalized and improved.
This may change plans for queries.
================(Build #3290 - Engineering Case #658549)================
Result set rows could have been presented in an incorrect order when all
of the following conditions were present for a SQL query:
- An index existed in which the first column (say col1) was specified to
be in descending order
- The query contained a search condition of the form "col1 LIKE expression"
where the expression started with non-wildcard characters.
- The query contained an ORDER BY starting with col1
This has been corrected.
================(Build #3275 - Engineering Case #654684)================
References to derived table columns may have been incorrect when temporary
tables were present and the derived table was used to load the temporary
table. This has been corrected.
================(Build #3275 - Engineering Case #654648)================
The substr() function was permitting LONG VARCHAR values to be used as the
first argument to the function. This has been corrected
================(Build #3272 - Engineering Case #653884)================
The Mobilink Server would have logged the error "Light weight poll request
failed" after every poll attempt from an Ultralite client (through the
use of the ML_GET_SERVER_NOTIFICATION function), even if the polls were actually
successful. This has been fixed
================(Build #3298 - Engineering Case #661008)================
Right-clicking on an UltraLite database in the UltraLite Sybase Central plug-in,
will show a list of database properties, one of which is the database file
name. If the file name contained multi-byte characters, they could have been
displayed as mangled characters. This has now been fixed.
================(Build #3294 - Engineering Case #659866)================
If an invalid value was specified for the "(other)" parameter on
the Synchronization Profile property sheet, then it was not possible to clear
this invalid value unless the property sheet was closed and F5 was pressed.
This has now been fixed.
================(Build #3279 - Engineering Case #656087)================
When connecting from Sybase Central to an UltraLite database with multi-byte
characters in its file name, the database name would have appeared with mangled
characters. This has been fixed.
================(Build #3265 - Engineering Case #652188)================
When a table was selected in the tree and the Indexes tab was shown in the
right pane, there was no File -> New -> Index... menu item. As such,
it was only possible to start the Index wizard from the toolbar button. This
has been fixed.
================(Build #3281 - Engineering Case #656844)================
ULPod may have caused AvantGo clients to crash when calling the method TableAGDBSet
getTableAGDBSet. This has been fixed.
================(Build #3275 - Engineering Case #653158)================
The methods ULConnection.CountUploadRows, ULConnection.GetLastDownloadTime,
and ULConnection.ResetLastDownloadTime would have failed on Windows desktop
when provided named publications instead of ULConnection.SYNC_ALL_DB. This
has been fixed.
================(Build #3274 - Engineering Case #653467)================
If an UltraLite database had a table with a LONG VARCHAR column, and that
column contained XML data, attempting to view that data in the Interactive
SQL utility's cell editor (in the XML Outline tab) could have failed with
the error: "An invalid XML character (Unicode: 0x0) was found in the
element content of the document". This is now fixed.
================(Build #3297 - Engineering Case #660797)================
During a large (at least 15 MB) data synchronization, the UltraLiteJ native
library for Android could have caused a Dalvik VM memory overflow condition
similar to the following:
WARN/dalvikvm(641): ReferenceTable overflow (max=512)
...
ERROR/dalvikvm(641): Failed adding to JNI local ref table (has 512 entries)
...
ERROR/dalvikvm(641): VM aborting
The memory overflow condition would have occurred during a Connection.synchronize(
SyncParms parms ) call, where a SyncObserver was defined in the SyncParms.
This has been fixed.
================(Build #3297 - Engineering Case #660501)================
Incorrect results were possible when executing a query with an IN list consisting
of a single host variable. This has been corrected.
The work-around is to rewrite
expression in ( ? )
as
expression = ?.
================(Build #3295 - Engineering Case #660387)================
Incorrect results were possible for a deeply nested (at least a depth of
three) aggregate subquery. This has been corrected.
================(Build #3290 - Engineering Case #658845)================
Result set rows could have been presented in an incorrect order when all
of the following conditions were present for a SQL query:
- An index existed in which the first column (say col1) was specified to
be in descending order
- The query contained a search condition of the form "col1 LIKE expression"
where the expression started with non-wildcard characters.
- The query contained an ORDER BY starting with col1
This has been corrected.
================(Build #3278 - Engineering Case #655880)================
Second and subsequent '%' characters were not being handled properly in LIKE
clauses. This was corrected.