SQL Anywhere Bug Fix Readme for Version 12.0.0, build 2601
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 2483 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.
Moderate testing has been performed on the software, but full testing has not
been performed. Customers are encouraged to verify the suitability of the software
before releasing it into a production environment.
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
If any of these bug fixes apply to your installation, iAnywhere strongly recommends
that you install this fix. Specific testing of behavior changes is recommended.
================(Build #2596 - Engineering Case #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.
================(Build #2566 - Engineering Case #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.
================(Build #2545 - Engineering Case #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
================(Build #2564 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2578 - Engineering Case #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.
================(Build #2590 - Engineering Case #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).
================(Build #2574 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2582 - Engineering Case #641265)================
The left pane header now contains an icon to help clarify which toolbar button
represents the left pane view.
================(Build #2600 - Engineering Case #645529)================
When run on Windows desktop, UltraLite now supports long paths when creating,
opening, or deleting databases.
================(Build #2599 - Engineering Case #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.
================(Build #2597 - Engineering Case #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.
================(Build #2593 - Engineering Case #643576)================
Sybase Central could have crashed when deleting a deployed Remote Task while
the "Results" panel was selected. This has been fixed.
================(Build #2586 - Engineering Case #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.
================(Build #2586 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2556 - Engineering Case #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".
================(Build #2555 - Engineering Case #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.
================(Build #2554 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2551 - Engineering Case #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.
================(Build #2551 - Engineering Case #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.
================(Build #2550 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2548 - Engineering Case #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.
================(Build #2548 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #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
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2541 - Engineering Case #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.
================(Build #2541 - Engineering Case #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.
================(Build #2540 - Engineering Case #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.
================(Build #2575 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2564 - Engineering Case #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.
================(Build #2555 - Engineering Case #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.
================(Build #2550 - Engineering Case #634184)================
The MobiLink agent for central administration of remotes could not be configured
as a Windows service with dbsvc. This has been fixed.
================(Build #2600 - Engineering Case #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.
================(Build #2578 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2601 - Engineering Case #645223)================
The Relay Server for IIS7 could have unexpectedly disconnected persistent
http connections after finishing relaying a server response. This has been
fixed.
================(Build #2595 - Engineering Case #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.
================(Build #2595 - Engineering Case #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.
================(Build #2594 - Engineering Case #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.
================(Build #2590 - Engineering Case #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.
================(Build #2586 - Engineering Case #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.
================(Build #2584 - Engineering Case #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.
================(Build #2570 - Engineering Case #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 “Invalid 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.
================(Build #2569 - Engineering Case #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.
================(Build #2566 - Engineering Case #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 “Invalid 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.
================(Build #2566 - Engineering Case #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.
================(Build #2566 - Engineering Case #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.
================(Build #2552 - Engineering Case #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.
================(Build #2549 - Engineering Case #633685)================
Under rare situation, the Relay Server Outbound Enabler (RSOE) may have crashed
during channel renewal. This has been fixed.
================(Build #2543 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2570 - Engineering Case #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.
================(Build #2565 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2598 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2577 - Engineering Case #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.
================(Build #2566 - Engineering Case #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.
================(Build #2565 - Engineering Case #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. When 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.
================(Build #2565 - Engineering Case #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.
================(Build #2564 - Engineering Case #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".
================(Build #2557 - Engineering Case #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.
================(Build #2552 - Engineering Case #635300)================
The text displayed by an evaluation version of the MobiLink server was truncated.
This has been fixed.
================(Build #2546 - Engineering Case #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".
================(Build #2545 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2539 - Engineering Case #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.
================(Build #2484 - Engineering Case #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.
================(Build #2595 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2570 - Engineering Case #638374)================
The MobiLink Replay utility (mlreplay) could have been run with less than
1 simulated client (using the –n option), which could have caused a “Memory
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.
================(Build #2554 - Engineering Case #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.
================(Build #2553 - Engineering Case #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
================(Build #2549 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2583 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2566 - Engineering Case #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.
================(Build #2594 - Engineering Case #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.
================(Build #2591 - Engineering Case #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).
================(Build #2591 - Engineering Case #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.
================(Build #2590 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2580 - Engineering Case #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'.
================(Build #2580 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2578 - Engineering Case #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.
================(Build #2570 - Engineering Case #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.
================(Build #2569 - Engineering Case #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.
================(Build #2567 - Engineering Case #637725)================
The Available objects list would have been empty when creating SQL Server
Integration Services data source view. This problem has been fixed.
================(Build #2553 - Engineering Case #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.
================(Build #2551 - Engineering Case #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.
================(Build #2545 - Engineering Case #632608)================
The performance for fetching BLOB columns was much slower compared with the
managed OLE DB provider. This problem has been corrected.
================(Build #2597 - Engineering Case #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.
================(Build #2583 - Engineering Case #641485)================
Attempting to make a connection with invalid TCPIP protocol options could
have caused a crash in the client library. This has been fixed.
================(Build #2572 - Engineering Case #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.
================(Build #2558 - Engineering Case #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.
================(Build #2553 - Engineering Case #635035)================
While very rare, it was possible for the Server Enumeration utility (dblocate)
to hang. This has been fixed.
================(Build #2571 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2566 - Engineering Case #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.
================(Build #2564 - Engineering Case #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.
================(Build #2557 - Engineering Case #635960)================
Attempting to using Integrated Login, or Kerberos, with the NodeType connection
parameter could have failed. This has been fixed.
================(Build #2550 - Engineering Case #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.
================(Build #2588 - Engineering Case #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.
================(Build #2588 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2578 - Engineering Case #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.
================(Build #2572 - Engineering Case #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
================(Build #2551 - Engineering Case #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.
================(Build #2546 - Engineering Case #633125)================
Improvements to the DBSCHEMA_PROVIDER_TYPES rowset have been made to make
it more consistent with Microsoft SQL Server.
================(Build #2546 - Engineering Case #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.
================(Build #2543 - Engineering Case #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).
================(Build #2590 - Engineering Case #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.
================(Build #2590 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2578 - Engineering Case #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.
================(Build #2572 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2533 - Engineering Case #626617)================
A synchronization request from a client prior to version 11, that was using
a UTF8-encoded database, would have failed against 64-bit Unix servers.
This has been fixed.
Note, this problem does not occur with the 32-bit versions of the server.
================(Build #2570 - Engineering Case #635419)================
Attempting to retrieve the uid_has_hyphens option setting through the SNMP
interface would always have returned NULL. This has been fixed.
================(Build #2601 - Engineering Case #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.
================(Build #2600 - Engineering Case #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.
================(Build #2600 - Engineering Case #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.
================(Build #2600 - Engineering Case #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.
================(Build #2600 - Engineering Case #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.
================(Build #2599 - Engineering Case #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.
================(Build #2599 - Engineering Case #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.
================(Build #2599 - Engineering Case #645138)================
In very rare cases, a primary mirroring server could have crashed on shutdown
if the database was being updated. This has been fixed.
================(Build #2599 - Engineering Case #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
================(Build #2599 - Engineering Case #642833)================
When under heavy load, the server may have crashed when receiving multiple
requests on an HTTP connection. This has been fixed.
================(Build #2598 - Engineering Case #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.
================(Build #2598 - Engineering Case #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.
================(Build #2597 - Engineering Case #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.
================(Build #2597 - Engineering Case #644682)================
Using a reserved word as a label in a Transact-SQL procedure would have made
the procedure unusable. This has been fixed.
================(Build #2597 - Engineering Case #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.
================(Build #2596 - Engineering Case #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
================(Build #2594 - Engineering Case #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.
================(Build #2594 - Engineering Case #643805)================
In rare cases, if procedure profiling was used on a database with events
defined, the server could have hung. This has been fixed.
================(Build #2594 - Engineering Case #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.
================(Build #2594 - Engineering Case #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.
================(Build #2594 - Engineering Case #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>'
================(Build #2594 - Engineering Case #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.
================(Build #2594 - Engineering Case #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.
================(Build #2594 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2592 - Engineering Case #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.
================(Build #2592 - Engineering Case #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.
================(Build #2591 - Engineering Case #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.
================(Build #2591 - Engineering Case #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.
================(Build #2591 - Engineering Case #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.
================(Build #2591 - Engineering Case #643314)================
Canceling an external stored procedure may have caused the server to crash.
This has been fixed.
================(Build #2591 - Engineering Case #643281)================
In very rare and timing dependent cases, the server could have crashed after
disconnecting a TCP/IP connection. This has been fixed.
================(Build #2591 - Engineering Case #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.
================(Build #2591 - Engineering Case #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.
================(Build #2591 - Engineering Case #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.
================(Build #2587 - Engineering Case #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.
================(Build #2587 - Engineering Case #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.
================(Build #2586 - Engineering Case #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.
================(Build #2586 - Engineering Case #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.
================(Build #2585 - Engineering Case #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.
================(Build #2585 - Engineering Case #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.
================(Build #2585 - Engineering Case #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.
================(Build #2585 - Engineering Case #640540)================
The property QueryOpened was not being increased if a reusable cursor was
opened. This has been fixed.
================(Build #2585 - Engineering Case #640525)================
The readability of the query returned by the REWRITE function has been improved.
================(Build #2585 - Engineering Case #635356)================
The server could have crashed under certain specific circumstances when executing
the DROP STATISTICS statement. This problem has been resolved.
================(Build #2584 - Engineering Case #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.
================(Build #2584 - Engineering Case #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.
================(Build #2583 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2582 - Engineering Case #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".
================(Build #2582 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2579 - Engineering Case #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.
================(Build #2579 - Engineering Case #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.
================(Build #2579 - Engineering Case #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.
================(Build #2578 - Engineering Case #640232)================
Dropping a temporary procedure could have caused recovery to fail if the
procedure name was qualified with an owner. This has been fixed.
================(Build #2578 - Engineering Case #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.
================(Build #2578 - Engineering Case #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.
================(Build #2577 - Engineering Case #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.
================(Build #2577 - Engineering Case #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.
================(Build #2577 - Engineering Case #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.
================(Build #2577 - Engineering Case #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;
================(Build #2577 - Engineering Case #638368)================
Spurious "109200 Can't parallelize bloom filter" could have been
observed which were incorrect. This has been fixed.
================(Build #2576 - Engineering Case #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.
================(Build #2576 - Engineering Case #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.
================(Build #2576 - Engineering Case #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.
================(Build #2576 - Engineering Case #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
================(Build #2574 - Engineering Case #639159)================
In some cases, calling the system procedure sa_get_request_times() may have
caused the server to crash. This has now been fixed.
================(Build #2574 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2572 - Engineering Case #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.
================(Build #2572 - Engineering Case #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.
================(Build #2572 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2571 - Engineering Case #638477)================
In extremely rare circumstances, servers answering queries with keyset cursors
may have become unstable, leading to an eventual crash. This has been fixed.
================(Build #2571 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2571 - Engineering Case #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.
================(Build #2570 - Engineering Case #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.
================(Build #2569 - Engineering Case #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.
================(Build #2568 - Engineering Case #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.
================(Build #2568 - Engineering Case #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.
================(Build #2568 - Engineering Case #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
================(Build #2568 - Engineering Case #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.
================(Build #2568 - Engineering Case #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.
================(Build #2568 - Engineering Case #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".
================(Build #2567 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2567 - Engineering Case #637620)================
In rare circumstances, the server could have crashed while handling multiple
TLS connections. This has been fixed.
================(Build #2567 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2565 - Engineering Case #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.
================(Build #2563 - Engineering Case #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.
================(Build #2563 - Engineering Case #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.
================(Build #2562 - Engineering Case #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).
================(Build #2562 - Engineering Case #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.
================(Build #2562 - Engineering Case #636655)================
The server may have crashed when defining foreign keys that auto-created
columns in the referencing table. This has been fixed.
================(Build #2562 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2562 - Engineering Case #634324)================
The Timeout parameter of the system procedure xp_startsmtp() was being ignored.
This has been corrected.
================(Build #2562 - Engineering Case #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.
================(Build #2561 - Engineering Case #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.
================(Build #2561 - Engineering Case #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.
================(Build #2561 - Engineering Case #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.
================(Build #2561 - Engineering Case #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.
================(Build #2561 - Engineering Case #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.
================(Build #2558 - Engineering Case #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.
================(Build #2558 - Engineering Case #634900)================
The server may have become deadlocked while acquiring shared latches. This
has now been corrected.
================(Build #2557 - Engineering Case #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.
================(Build #2557 - Engineering Case #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.
================(Build #2557 - Engineering Case #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.
================(Build #2556 - Engineering Case #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.
================(Build #2556 - Engineering Case #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.
================(Build #2556 - Engineering Case #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.
================(Build #2555 - Engineering Case #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.
================(Build #2554 - Engineering Case #635322)================
The cleaner may not have completely cleaned pages in some situations. This
has now been fixed.
================(Build #2554 - Engineering Case #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.
================(Build #2554 - Engineering Case #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.
================(Build #2554 - Engineering Case #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.
================(Build #2554 - Engineering Case #632873)================
Concurrent updates to an IMMEDIATE REFRESH text index may have corrupted
the index. This has been fixed.
================(Build #2553 - Engineering Case #635066)================
When Snapshot isolation was enabled, deleted rows might not have been physically
removed in some cases. This has been corrected.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering 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.
================(Build #2552 - Engineering Case #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.
================(Build #2551 - Engineering Case #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
================(Build #2550 - Engineering Case #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.
================(Build #2550 - Engineering Case #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.
================(Build #2550 - Engineering Case #633747)================
Unsetting the public option Oem_string would have caused the server to crash.
This has been fixed.
================(Build #2550 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2548 - Engineering Case #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.
================(Build #2547 - Engineering Case #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
================(Build #2547 - Engineering Case #632342)================
Under rare circumstances, the server may have hung while diagnostic tracing
was enabled. This has been fixed.
================(Build #2547 - Engineering Case #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.
================(Build #2546 - Engineering Case #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 )
)
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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..
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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;
================(Build #2544 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #631475)================
Calls to some system procedures may have caused an server crash if null arguments
were used. This has been fixed.
================(Build #2543 - Engineering Case #631113)================
Attempting to execute a CREATE OR REPLACE PROCEDURE statement could have
caused a server crash. This has been fixed.
================(Build #2543 - Engineering Case #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".
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2542 - Engineering Case #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' ).
================(Build #2542 - Engineering Case #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.
================(Build #2540 - Engineering Case #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.
================(Build #2501 - Engineering Case #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.
================(Build #2484 - Engineering Case #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.
================(Build #2600 - Engineering Case #645497)================
No messages would have been when right-clicking a synchronization profile,
selecting "Synchronize...", and then clicking OK. This has been
fixed.
================(Build #2598 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2592 - Engineering Case #643457)================
Clicking the Back or Next button may not have updated the toolbar buttons
properly. This has been fixed.
================(Build #2590 - Engineering Case #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.
================(Build #2587 - Engineering Case #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.
================(Build #2586 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2565 - Engineering Case #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.
================(Build #2564 - Engineering Case #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.
================(Build #2559 - Engineering Case #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.
================(Build #2559 - Engineering Case #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.
================(Build #2559 - Engineering Case #636304)================
Opening the Domain, Web Service or Spatial Reference System property dialogs
could have caused the Sybase Central to crash. This has been fixed.
================(Build #2559 - Engineering Case #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.
================(Build #2559 - Engineering Case #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.
================(Build #2559 - Engineering Case #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."
================(Build #2559 - Engineering Case #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.
================(Build #2559 - Engineering Case #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.
================(Build #2556 - Engineering Case #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.
================(Build #2556 - Engineering Case #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.
================(Build #2552 - Engineering Case #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.
================(Build #2552 - Engineering Case #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.
================(Build #2550 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #633011)================
The Login Mapping wizard's last page did not always display the current login_mode
option setting correctly. This has been fixed.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2539 - Engineering Case #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.
================(Build #2600 - Engineering Case #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.
================(Build #2597 - Engineering Case #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.
================(Build #2596 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2585 - Engineering Case #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.
================(Build #2585 - Engineering Case #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.
================(Build #2584 - Engineering Case #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.
================(Build #2583 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2582 - Engineering Case #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.
================(Build #2580 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2574 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2573 - Engineering Case #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.
================(Build #2568 - Engineering Case #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.
================(Build #2568 - Engineering Case #637991)================
The Interactive SQL utility could have crashed when completing a DELETE statement,
if a table alias was given. This has been fixed.
================(Build #2568 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2567 - Engineering Case #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.
================(Build #2565 - Engineering Case #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.
================(Build #2565 - Engineering Case #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.
================(Build #2564 - Engineering Case #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.
================(Build #2564 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2562 - Engineering Case #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.
================(Build #2561 - Engineering Case #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.
================(Build #2560 - Engineering Case #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.
================(Build #2559 - Engineering Case #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.
================(Build #2559 - Engineering Case #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.
================(Build #2557 - Engineering Case #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.
================(Build #2555 - Engineering Case #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.
================(Build #2555 - Engineering Case #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.
================(Build #2555 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2553 - Engineering Case #633019)================
It was not possible to edit BIT values in the "Results" panel.
This has been fixed.
================(Build #2551 - Engineering Case #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.
================(Build #2550 - Engineering Case #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.
================(Build #2550 - Engineering Case #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.
================(Build #2550 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2549 - Engineering Case #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 “Commit
after every statement” option was checked (under Tools/Options/UltraLite/Commands).
This has now been fixed.
A workaround is to uncheck the “Commit after every statement” option.
================(Build #2547 - Engineering Case #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.
================(Build #2547 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2545 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2544 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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).
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #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.
================(Build #2543 - Engineering Case #631028)================
Creating the first user DSN by clicking the "Save as ODBC Data Source"
Tools button could have silently failed. This has been fixed.
================(Build #2543 - Engineering Case #591837)================
The Index Consultant in the Interactive SQL utility would have failed to
process queries containing line-terminated comments (ie -- or //). This
has been fixed.
As a work around, removing the comments allowed the analysis to proceed.
================(Build #2542 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2542 - Engineering Case #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.
================(Build #2541 - Engineering Case #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.
================(Build #2540 - Engineering Case #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.
================(Build #2540 - Engineering Case #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.
================(Build #2540 - Engineering Case #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.
================(Build #2533 - Engineering Case #552627)================
If the language DLL was missing, the utilities createcert, viewcert, createkey,
and mlfiletransfer would all have continued to execute, but would not have
output any string resources. These utilities will now fail in this case
with an appropriate error message.
Also, the usage text for createcert and viewcert will now display the options
in alphabetical order.
================(Build #2585 - Engineering Case #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.
================(Build #2571 - Engineering Case #636651)================
The use of START AT or FIRST in a subquery may have resulted in incorrect
results. This was corrected.
================(Build #2568 - Engineering Case #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.
================(Build #2546 - Engineering Case #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 “Cancel” would have resulted in nothing happening. Now, the dialog
box will be canceled when “Cancel” is clicked.
================(Build #2594 - Engineering Case #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.
================(Build #2551 - Engineering Case #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.
================(Build #2551 - Engineering Case #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.
================(Build #2577 - Engineering Case #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.
================(Build #2557 - Engineering Case #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.
================(Build #2550 - Engineering Case #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
================(Build #2547 - Engineering Case #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.
================(Build #2577 - Engineering Case #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.
================(Build #2585 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2581 - Engineering Case #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.
================(Build #2580 - Engineering Case #640582)================
UltraLite does not support user-defined database properties. So when executing
the statement SELECT db_property(‘bad-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.
================(Build #2568 - Engineering Case #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.
================(Build #2553 - Engineering Case #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.
================(Build #2546 - Engineering Case #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.
================(Build #2545 - Engineering Case #632340)================
Executing a LOAD TABLE statement on Mac OSX systems would have failed with
the error -134 (feature not implemented). This has been fixed.
================(Build #2595 - Engineering Case #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.
================(Build #2594 - Engineering Case #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.
================(Build #2593 - Engineering Case #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.
================(Build #2582 - Engineering Case #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).
================(Build #2576 - Engineering Case #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.
================(Build #2571 - Engineering Case #638596)================
The use of START AT or FIRST in a subquery may have resulted in incorrect
results. This was corrected.
================(Build #2570 - Engineering Case #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.
================(Build #2561 - Engineering Case #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
================(Build #2557 - Engineering Case #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.
================(Build #2549 - Engineering Case #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.
================(Build #2549 - Engineering Case #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
================(Build #2543 - Engineering Case #631404)================
The NOT NULL FOREIGN KEY clause was misdiagnosed as invalid in ALTER TABLE
statement. This was been corrected.
================(Build #2574 - Engineering Case #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).
================(Build #2545 - Engineering Case #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.