Following is a list of enhancements to programming interfaces introduced in SQL Anywhere version 11.0.0.
External environments SQL Anywhere now includes support for six external runtime environments: Java, Perl, PHP, CLR, embedded SQL, and ODBC. SQL Anywhere has had the ability to call compiled native functions written in C or C++ for some time. However, when these procedures are run by the server, the dynamic link library or shared object has always been loaded by the database server and the calls out to the native functions have always been made by the database server. The risk here is that if the native function causes a fault, then the database server will crash. Running compiled native functions outside of the database server, in an external environment, eliminates these risks to the server. See SQL Anywhere external environment support.
A database upgrade is required to take advantage of this new feature. See Upgrading SQL Anywhere.
PHP external environment support SQL Anywhere 11.0.0 includes a variety of pre-built binaries for various PHP versions including 5.1.1 through 5.1.6 and 5.2.0 through 5.2.6. If you have any one of these versions already installed on your server machine, then you should use the SQL Anywhere pre-built binaries instead of building the PHP external environment yourself. Note that, for Linux and Solaris, both 32-bit and 64-bit versions of these binaries are provided. For Windows and other systems, only 32-bit versions are provided.
If you have a different PHP version installed than the ones listed above, then you must build the software, or switch your PHP version to one that matches a SQL Anywhere prebuilt version. For instructions on building the SQL Anywhere PHP module, see SQL Anywhere PHP API.
Perl external environment support It is very important that you update your version of the SQL Anywhere Perl DBD driver before you try to use the Perl external environment. If you do not update your Perl DBD driver, then server-side Perl will not work.
Also, unlike PHP, we do not include pre-built binaries for various versions of Perl. Source code for the SQL Anywhere Perl DBD driver is located in install-dir\src\perl. For instructions on building the SQL Anywhere Perl DBD driver, see SQL Anywhere Perl DBD::SQLAnywhere API.
Web server support for UTF-8 URLs Previously, the web server decoded %-encoded data within the request URL (or application/x-www-form-urlencoded data within the body of the request) into the database character set. Now, the contents of %-encoded data is tested for UTF-8 sequences and converted to the database character set on a maximal extent basis. Any encoded data that is not UTF-8 is decoded and treated as if it is already in the database character set.
Client HTTP applications should send %-encoded UTF-8 data exclusively. Note that ASCII is represented in UTF-8 as is. For example, a space is encoded as %20.
New client callback API A new client callback API has been added in support of the new client-side loading and unloading of data features. For embedded SQL, see DB_CALLBACK_VALIDATE_FILE_TRANSFER in db_register_a_callback function. For ODBC, see SA_REGISTER_VALIDATE_FILE_TRANSFER_CALLBACK in SQL Anywhere connection attributes.
DBLib indicator behavior defined when no rows received On a fetch or execute where no rows are received from the database server (on an error or the end of the result set), indicator values are now unchanged. See Indicator variables.
SQL_ATTR_CONNECTION_DEAD promptly detects dead connection Using ODBC's SQLGetConnectAttr call to get the SQL_ATTR_CONNECTION_DEAD attribute now gets the value SQL_CD_TRUE if the connection has been dropped even if no request has been made to the server since the connection was dropped. Determining if the connection has been dropped is done without making a request to the server, and the dropped connection is detected within a few seconds. The connection can be dropped for a number of reasons, for example, on an idle timeout (see the -ti server option). Before this change, SQL_ATTR_CONNECTION_DEAD only got the value SQL_CD_TRUE if the connection was disconnected or if ODBC driver made a request to the server (by calling SQLExecDirect for example) after the connection was dropped. See Getting connection attributes.
JDBC Driver now supports ResultSet.getBlob().getBinaryStream() The iAnywhere JDBC Driver currently supports the ResultSet.getBlob() method even though this method is optional in the JDBC specification. Support has been added for the optional ResultSet.getBlob().getBinaryStream() method. See iAnywhere JDBC 3.0 API support.
iAnywhere JDBC driver now accepts jdbc:ianywhere as URL header in addition to jdbc:odbc Previously, applications using the URL header jdbc:odbc could be reasonably certain that the JDBC Driver Manager would use the iAnywhere JDBC driver for making connections using this URL. However, recent versions of the Java VM have started to register the Sun JDBC-ODBC bridge as a JDBC driver, and since the Sun JDBC-ODBC bridge also accepts URLs beginning with jdbc:odbc, the chance of an application getting the Sun JDBC-ODBC bridge instead of the iAnywhere JDBC driver is quite high. To guarantee that the JDBC Driver Manager uses the iAnywhere JDBC driver instead of the Sun JDBC-ODBC bridge, the application should use the URL header jdbc:ianywhere instead. See Connecting from a JDBC client application.
ODBC driver manager now accepts driver=iAnywhere Solutions 11 - Oracle The Unix ODBC driver manager now accepts driver=iAnywhere Solutions 11 - Oracle, and it loads the threaded iAnywhere ODBC driver for Oracle if the application is threaded. It does not load the driver if the application is non-threaded because the non-threaded iAnywhere ODBC driver for Oracle is not supported. See iAnywhere Solutions Oracle driver.
ODBC driver manager now accepts driver=UltraLite 11 The Unix ODBC driver manager already accepts driver=SQL Anywhere 10 and loads the SQL Anywhere ODBC driver (either threaded or non-threaded, depending on the application). The Unix ODBC driver manager now accepts driver=SQL Anywhere 11 and driver=UltraLite 11. In the case of the UltraLite driver, the driver manager only loads the threaded version of the UltraLite ODBC driver because only the threaded version exists.
TDS connections enhancement The SQL Anywhere database server now allows TDS connections to the default database, even when the Open Client login server
name does not match the name of the default database, provided that the connection string does not involve starting a database
(that is, there is no DBF=...
) and provided that the database server is only running one database.
Administration Tool launchers now easier to redeploy The launcher executables for the database tools (Sybase Central, DBISQL, DBConsole, ML Monitor) are now easier to redeploy. Registry entries and a set directory structure for the location of the JAR files are no longer required. Each executable needs to have an .ini file in the same directory (with the same name as the executable file) containing the details on how to load the tool. See Deploying administration tools.
SQL Anywhere .NET Data Provider now supports distributed transaction enlistment The .NET 2.0 framework introduced a new namespace System.Transactions, which contains classes for writing transactional applications. Client applications can create and participate in distributed transactions with one or multiple participants. Client applications can implicitly create transactions using the TransactionScope class. The connection object can detect the existence of an ambient transaction created by the TransactionScope and automatically enlist. Client applications can also create a CommittableTransaction and call the EnlistTransaction method to enlist.
This feature is supported by the SQL Anywhere .NET 2.0 Data Provider. Distributed transaction has significant performance overhead. It is recommended that you use database transactions for non-distributed transactions. See Transaction processing.
SQL Anywhere .NET Data Provider now supports named parameters The SQL Anywhere provider now supports named parameters in SACommand. If the user specifies all parameter names, the provider maps the parameter values when the command is executed. When you use named parameters, the order of parameters is not required to match the order of host variables.
SACommand cmd = new SACommand( "UPDATE MyTable SET name = :name WHERE id = :id", conn ); SAParameter p1 = new SAParameter( "id", SADbType.Integer ); p1.Direction = ParameterDirection.Input; p1.Value = 1; cmd.Parameters.Add( p1 ); SAParameter p2 = new SAParameter( "name", SADbType.Char, 40 ); p2.Direction = ParameterDirection.Input; p2.Value = "asdasd"; cmd.Parameters.Add( p2 ); cmd.ExecuteNonQuery(); |
Web services enhancements The following web services enhancements have been made in this release:
Extending web client service procedures of type HTTP:POST to allow a user-defined body The TYPE clause of the CREATE PROCEDURE and CREATE FUNCTION statements has been extended to allow the specification of a mime type. See CREATE FUNCTION statement or CREATE PROCEDURE statement.
Extending web service client procedures to support the PUT, DELETE, and HEAD HTTP methods Web service client procedures and functions now support the PUT, DELETE and HEAD HTTP methods. The TYPE clause of the CREATE PROCEDURE and CREATE FUNCTION statements has been extended to support these methods. Similar to the POST method, PUT requires a content-type extension within the type clause and only a single (non-substitution parameter) is permitted. See CREATE SERVICE statement, CREATE FUNCTION statement, and CREATE PROCEDURE statement.
sa_http_php_page and sa_http_php_page_interpreted system procedures The new web service system procedures sa_http_php_page and sa_http_php_page_interpreted return the result of passing a PHP script through a PHP interpreter. See sa_http_php_page system procedure and sa_http_php_page_interpreted system procedure.
HTTP_BODY system function A new web service function has been added. The HTTP_BODY function returns the body of the HTTP request in binary form. See HTTP_BODY function [HTTP].
WSDLC support for generating web service client SOAP procedures In addition to generating QAnywhere client-side SOAP interfaces for C# and JAVA, WSDLC now supports the generation of SQL SOAP (web service) client procedures for SQL Anywhere. WSDLC reads a WSDL1.1 compliant URL or file and generates procedures (or functions) with appropriate parameters and clauses that map to respective SOAP operations listed within the WSDL. The generated SQL statements are written to a SQL file. See Using the iAnywhere WSDL compiler.
HTTP SOAP services defined as FORMAT CONCRETE can now expose EXPLICIT result sets This feature provides the capability for a CONCRETE SOAP service to expose an explicit response object if the service calls a stored procedure that specifies a RESULT clause. A DISH service will expose such a SOAP service as a SOAP operation returning a unique or explicit response object. The XML schema of the object contains column names and data types based on the stored procedure RESULT clause. Rather than referencing the generic SimpleDataset object the SOAP response will reference the explicit response object as specified within the WSDL. A SOAP client toolkit can now generate specific interfaces enabling an application to more directly access data values from a SQL Anywhere 'CONCRETE' SOAP response.
The CREATE SERVICE and ALTER SERVICE statements have been extended to allow you to define an EXPLICIT response object or the generic SimpleDataset. See CREATE SERVICE statement and Tutorial: Using data types with JAX-WS.
Support for JSON web services SQL Anywhere now supports web services that return JSON-formatted responses. See CREATE SERVICE statement.
Logging web service clients The database server now supports logging web service client connections to an output file. You can specify the -zoc server option or use the WebClientLogFile and WebClientLogging properties with the sa_server_option system procedure to control logging and specify the location of the web service client log file. You can also disable the use of this feature with the -sf server option. See:
Send feedback about this page via email or DocCommentXchange | Copyright © 2008, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.0 |