License Statement
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Acknowledgements
Microsoft®, Windows®, Windows NT®, Windows® XP, and Windows Vista® are U.S. registered trademarks of Microsoft Corporation. Intel® and Intel® Itanium® are trademarks of Intel Corporation in the U.S. and other countries. Java® is a registered trademark of Oracle and/or its affiliates. Motif, OSF/1, UNIX®, X/Open®, and the X device is a trademark of X/Open Company Ltd. in the UK and other countries.
OSF, OSF/1, OSF/Motif, Motif, and Open Software Foundation are trademarks of the Open Software Foundation in the U.S. and other countries. © 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
The OSF documentation and the OSF software to which it relates are derived in part from materials supplied by the following: © 1987, 1988, 1989 Carnegie-Mellon University. © 1989, 1990, 1991 Digital Equipment Corporation. © 1985, 1988, 1989, 1990 Encore Computer Corporation. © 1988 Free Software Foundation, Inc. © 1987, 1988, 1989, 1990, 1991 Hewlett-Packard Company. © 1985, 1987, 1988, 1989, 1990, 1991, 1992 International Business Machines Corporation. © 1988, 1989 Massachusetts Institute of Technology. © 1988, 1989, 1990 Mentat Inc. © 1988 Microsoft Corporation. © 1987, 1988, 1989, 1990, 1991, 1992 SecureWare, Inc. © 1990, 1991 Siemens Nixdorf Informations systeme AG. © 1986, 1989, 1996, 1997 Sun Microsystems, Inc. © 1989, 1990, 1991 Transarc Corporation.
OSF software and documentation are based in part on the Fourth Berkeley Software Distribution under license from The Regents of the University of California. OSF acknowledges the following individuals and institutions for their role in its development: Kenneth C.R.C. Arnold, Gregory S. Couch, Conrad C. Huang, Ed James, Symmetric Computer Systems, Robert Elz. © 1980, 1981, 1982, 1983, 1985, 1986, 1987, 1988, 1989 Regents of the University of California. OSF MAKES NO WARRANTY OF ANY KIND WITH REGARD TO THE OSF MATERIAL PROVIDED HEREIN, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. OSF shall not be liable for errors contained herein or for incidental consequential damages in connection with the furnishing, performance, or use of this material.
Revision History
Version | Date |
---|---|
2.2.0 |
TBD |
2.1.0 |
May 1, 2017 |
2.0.1 |
July 7, 2016 |
2.0.0 |
June 6, 2016 |
1.3.0 |
January, 2016 |
1. About This Document
This document describes how to use the Trafodion JDBC Type 4 Driver (subsequently called the Type 4 driver). This driver provides Java applications running on a foreign platform with JDBC access to Trafodion.
1.1. Intended Audience
This Trafodion JDBC Type 4 Driver Programmer’s Reference Guide is for experienced Java programmers who want to access Trafodion SQL databases.
This document assumes you are already familiar with the Java documentation, which is located at http://docs.oracle.com/en/java/.
1.2. New and Changed Information
This is a new manual.
1.3. Notation Conventions
This list summarizes the notation conventions for syntax presentation in this manual.
-
UPPERCASE LETTERS
Uppercase letters indicate keywords and reserved words. Type these items exactly as shown. Items not enclosed in brackets are required.
SELECT
-
lowercase letters
Lowercase letters, regardless of font, indicate variable items that you supply. Items not enclosed in brackets are required.
file-name
-
[ ] Brackets
Brackets enclose optional syntax items.
DATETIME [start-field TO] end-field
A group of items enclosed in brackets is a list from which you can choose one item or none.
The items in the list can be arranged either vertically, with aligned brackets on each side of the list, or horizontally, enclosed in a pair of brackets and separated by vertical lines.
For example:
DROP SCHEMA schema [CASCADE] DROP SCHEMA schema [ CASCADE | RESTRICT ]
-
{ } Braces
Braces enclose required syntax items.
FROM { grantee [, grantee ] ... }
A group of items enclosed in braces is a list from which you are required to choose one item.
The items in the list can be arranged either vertically, with aligned braces on each side of the list, or horizontally, enclosed in a pair of braces and separated by vertical lines.
For example:
INTERVAL { start-field TO end-field } { single-field } INTERVAL { start-field TO end-field | single-field }
-
| Vertical Line
A vertical line separates alternatives in a horizontal list that is enclosed in brackets or braces.
{expression | NULL}
-
… Ellipsis
An ellipsis immediately following a pair of brackets or braces indicates that you can repeat the enclosed sequence of syntax items any number of times.
ATTRIBUTE[S] attribute [, attribute] ... {, sql-expression } ...
An ellipsis immediately following a single syntax item indicates that you can repeat that syntax item any number of times.
For example:
expression-n ...
-
Punctuation
Parentheses, commas, semicolons, and other symbols not previously described must be typed as shown.
DAY (datetime-expression) @script-file
Quotation marks around a symbol such as a bracket or brace indicate the symbol is a required character that you must type as shown.
For example:
"{" module-name [, module-name] ... "}"
-
Item Spacing
Spaces shown between items are required unless one of the items is a punctuation symbol such as a parenthesis or a comma.
DAY (datetime-expression) DAY(datetime-expression)
If there is no space between two items, spaces are not permitted. In this example, no spaces are permitted between the period and any other items:
myfile.sh
-
Line Spacing
If the syntax of a command is too long to fit on a single line, each continuation line is indented three spaces and is separated from the preceding line by a blank line.
This spacing distinguishes items in a continuation line from items in a vertical list of selections.
match-value [NOT] LIKE _pattern [ESCAPE esc-char-expression]
1.4. Comments Encouraged
We encourage your comments concerning this document. We are committed to providing documentation that meets your needs. Send any errors found, suggestions for improvement, or compliments to user@trafodion.apache.org.
Include the document title and any comment, error found, or suggestion for improvement you have concerning this document.
2. Introduction
This document describes how to use the Trafodion JDBC Type 4 Driver. This driver provides Java applications running on a foreign platform with JDBC access to Trafodion SQL databases on the Trafodion.
Supported Java Releases: The Type 4 driver requires Java enabled platforms that support JDK 1.7 or higher.
2.1. Type 4 Driver API Package
The Type 4 driver package, org.trafodion.jdbc.t4
, is shipped with the
driver software. For class and method descriptions, see the
Trafodion JDBC Type 4 Driver API Reference.
The Trafodion JDBC Type 4 Driver (hereafter, Type 4 driver) implements JDBC technology that conforms to the standard JDBC 3.0 Data Access API.
To obtain detailed information on the standard JDBC API, download the JDBC API documentation: http://docs.oracle.com/en/java/.
2.2. Installation
Refer to the Trafodion Client Installation Guide.
3. Accessing Trafodion SQL Databases
3.1. Data Sources
The term data source logically refers to a database or other data storage entity. A JDBC (client) data source is physically a Java object that contains properties such as the URL of the physical database, the catalog to use when connecting to this database, and the schema to use when connecting to this database. The JDBC data source also contains methods for obtaining a JDBC connection to the underlying database.
3.1.1. JDBC Data Source (client-side)
All JDBC data source classes implement either the javax.sql.DataSource
interface or the javax.sql.ConnectionPoolDataSource
interface. The Type
4 driver data source classes are org.trafodion.jdbc.t4.TrafT4DataSource
and
org.trafodion.jdbc.t4.TrafT4ConnectionPoolDataSource
. (These classes are
defined by the JDBC 3.0 specification.)
Typically, a user or system administrator uses a tool to create a data source, and then registers the data source by using a JNDI service provider. At run time, a user application typically retrieves the data source through JNDI, and uses the data source’s methods to establish a connection to the underlying database.
A DataSource object maps to an instance of a database. In the Type 4 driver product, the DataSource object acts as an interface between the application code and the database and enables connection with a DCS (Data Connectivity Services) data source.
3.2. Security
Clients connect to the Trafodion platform with a valid user name and password, using standard JDBC 3.0 APIs. An application can make multiple connections using different user IDs, and creating different Connection objects.
The Type 4 driver provides for user name and password authentication. The password is encrypted.
3.3. Connection by Using the DataSource Interface
The javax.sql.DataSource
interface is the preferred way to establish a
connection to the database because this interface enhances the application
portability. Portability is achieved by allowing the application to use a
logical name for a data source instead of providing driver-specific information
in the application. A logical name is mapped to a javax.sql.DataSource
object through a naming service that uses the Java Naming and Directory
Interface (JNDI). Using this DataSource method is particularly recommended
for application servers.
When an application requests a connection by using the getConnection
method
in the DataSource
, then the method returns a Connection
object.
A DataSource
object is a factory for Connection
objects. An object that
implements the DataSource
interface is typically registered with a JNDI
service provider.
3.3.1. Overview of Tasks to Deploy DataSource Objects
Before an application can connect to a DataSource
object, typically
the system administrator deploys the DataSource
object so that
the application programmers can start using it.
Data source properties are usually set by a system administrator using a GUI tool as part of the installation of the data source. Users to the data source do not get or set properties. Management tools can get at properties by using introspection.
Tasks involved in creating and registering a database object are:
-
Creating an instance of the
DataSource
class. -
Setting the properties of the
DataSource
object. -
Registering the
DataSource
object with a naming service that uses the Java Naming and Directory Interface (JNDI) API.
An instance of the DataSource
class and the DataSource
object
properties are usually set by an application developer or system
administrator using a GUI tool as part of the installation of the
data source. If you are using an installed data source, then see
Programmatically Creating an Instance of the DataSource Class.
The subsequent topics show an example of performing these tasks programmatically.
For more information about using data sources, see Connecting with DataSource Objects in the JDBC™ Database Access: Table of Contents documentation or other information available in the field.
3.3.2. DataSource Object Properties
A DataSource
object has properties that identify and describe the actual
data source that the object represents. These properties include such
information as the URL (the primary IP address or host name of the database),
the database schema and catalog names, the location of the database server,
the name of the database, and so forth.
For details about Type 4 driver properties that you can use with the DataSource
object, see Type 4 Driver Properties.
3.3.3. Programmatically Creating an Instance of the DataSource Class
A JDBC application can set DataSource
properties programmatically and
register with a DataSource object. To get or set DataSource
object properties programmatically, use the
appropriate getter or setter methods on the TrafT4DataSource
object or
the TrafT4ConnectionPoolDataSource
object.
Example
TrafT4DataSource temp = new TrafT4DataSource() ;
temp.setCatalog( "TRAFODION" ) ;
In the following example, the code fragment illustrates the methods that a
DataSource
object ds
needs to include if the object supports the
serverDataSource
property ds.setServerDataSource( "my_server_datasource" )
.
In this example, the code shows setting properties for the TrafT4DataSource
object
to use the Type 4 driver to access a Trafodion database:
TrafT4DataSource ds = new TrafT4DataSource() ;
ds.setUrl( "jdbc:t4jdbc://<primary IP addr or host name>:23400/" );
ds.setSchema( "myschema" ) ;
ds.setUser( "gunnar" ) ;
ds.setPassword( "my_userpassword" ) ;
// Properties relevant for Type 4 connection pooling.
// Set ds.setMaxPoolSize(-1) for turning OFF connection pooling
ds.setMaxPoolSize( "100" ) ;
ds.setMinPoolSize( "10" ) ;
// Properties relevant for Type 4 statement pooling.
// Set ds.setMaxStatement(0) for turning statement pooling OFF
// Statement pooling is enabled only when connection pooling is
// enabled.
ds.setMaxStatements( "7000" ) ;
This technique essentially builds a properties file. For more information, see Creating and Using a Properties File.
3.3.4. Programmatically Registering the DataSource Object
In the following example, the code shows how to register, programmatically,
the TrafT4DataSource
object ds
that was created using the preceding code with JNDI.
java.util.Hashtable env = new java.util.Hashtable() ;
env.put( Context.INITIAL_CONTEXT_FACTORY, "Factory class name here" ) ;
javax.naming.Context ctx = new javax.naming.InitialContext( env ) ;
ctx.rebind( "myDataSource", ds ) ;
3.3.5. Retrieving a DataSource Instance by Using JNDI and Connecting to the Data Source
Typically, the JDBC application looks up the data source JNDI name from a
context object. Once the application has the DataSource
object, then the application
does a getConnection()
call on the data source and gets a connection.
The steps that JDBC application does to connect to and use the data source associated with the database are listed below together with the application code to perform the operation.
-
Import the packages.
import javax.naming.* ; import java.sql.* ; import javax.sql.DataSource ;
-
Create the initial context.
Hashtable env = new Hashtable() ; env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory" ) ; try { Context ctx = new InitialContext( env ) ; } catch( ... ) { ... }
-
Look up the JNDI name associated with the data source
myDataSource
, wheremyDataSource
is the logical name that will be associated with the real-world data source - server.DataSource ds = (DataSource)ctx.lookup( "myDataSource" ) ;
-
Create the connection using the data source.
con = ds.getConnection() ;
-
Do work with the connection. The following statements are just a simple example.
stmt = con.createStatement() ; try { stmt.executeUpdate( "drop table tdata" ) ; } catch ( SQLException e ) {}
3.3.6. Specifying the Properties File that Configures the Data Source
To use the properties file method to configure a DataSource
object, the properties
file must exist on disk and contain the property_name=property_value
pairs that
configure the data source.
See Creating and Using a Properties File
for more information about creating this file.
When the JDBC application makes the connection, then the application should pass the properties file as a command-line parameter:
java -Dt4jdbc.properties=<path of properties file on disk>
3.4. Connection by Using the DriverManager Class
The java.sql.DriverManager
class is widely used to get a connection, but
is less portable than the DataSource
class. The DriverManager
class
works with the Driver interface to manage the set of drivers loaded.
When an application issues a request for a connection using the
DriverManager.getConnection
method and provides a URL, the DriverManager
finds a suitable driver that recognizes this URL and obtains a database
connection using that driver.
org.trafodion.jdbc.t4.T4Driver
is the Type 4 driver class that
implements the java.sql.Driver
interface.
3.4.1. Loading and Registering the Driver
Before connecting to the database, the application loads the Driver class and registers the Type 4 driver with the DriverManager class in one of the following ways:
-
Specifies the Type 4 driver class in the
-Djdbc.drivers
option in the command line of the Java program:-Djdbc.drivers=org.trafodion.jdbc.t4.T4Driver
-
Uses the
Class.forName
method programmatically within the application:Class.forName("org.trafodion.jdbc.t4.T4Driver")
-
Adds the Type 4 driver class to the
java.lang.System
propertyjdbc.drivers
property within the application:jdbc.drivers=org.trafodion.jdbc.t4.T4Driver
3.4.2. Establishing the Connection
The DriverManager.getConnection
method accepts a string containing a
Type 4 driver URL. The JDBC URL for the Type 4 driver is
jdbc:t4jdbc://<ip addr or host name>:23400/[:][property=value[;property2=value2]...]
Parameter | Usage |
---|---|
|
The primary IP address or host name for the Trafodion database. |
|
The port number for the Trafodion SQL database. |
|
Specifies a Type 4 driver property name-property value pair. The pairs must be separated by a
semicolon ( |
For information about the properties file, see Type 4 Driver Properties.
To establish a connection, the JDBC application can use this code:
Class.forName( "org.trafodion.jdbc.t4.T4Driver" ) ; //loads the driver
String url = "jdbc:t4jdbc://<database primary IP address>:23400/"
Connection con = DriverManager.getConnection( url, "userID", "Passwd" ) ;
The variable con represents a connection to the data source that can be used to create and execute SQL statements.
3.4.3. Guidelines for Connections Using the Driver Manager
-
The Type 4 driver defines a set of properties that you can use to configure the driver. For detailed information about these properties, see Type 4 Driver Properties.
-
Java applications can specify the properties in these ways (listed in the order of precedence):
-
Using the
java.util.Properties
parameter in thegetConnection
method of DriverManager class. -
Using the database URL in the
DriverManager.getconnection
method, where the URL is:jdbc:t4jdbc://<ip addr or host name>:23400/:property=value
<ip addr or host name>
is the primary IP address or host name for the Trafodion database. -
Using a properties file for the JDBC driver. The properties file is passed as a command-line parameter. The format to enter the properties file in the command line is:
-Dt4jdbc.properties=<path of properties file on disk>
For example,
-Dt4jdbc.properties=C:\temp\t4props
For information about the properties file, see Creating and Using a Properties File.
-
Using JDBC properties with the
-D
option in the command line. If used, this option applies to all JDBC connections using theDriverManager
within the Java application. The format in the command line is:-Dt4jdbc.property_name=<property value>
For example,
-Dt4jdbc.maxStatements=1024
-
3.5. Connection Pooling
The Type 4 driver provides an implementation of connection pooling,
where a cache of physical database connections are assigned to a client
session and reused for the database activity. If connection pooling is
active, connections are not physically closed. The connection is
returned to its connection pool when the Connection.close()
method is
called. The next time a connection is requested by the client, the
driver will return the pooled connection, and not a new physical
connection.
-
The connection pooling feature is available when the JDBC application uses either the
DriverManager
class orDataSource
interface to obtain a JDBC connection. The connection pool size is determined by themaxPoolSize
property value andminPoolSize
property value. -
By default, connection pooling is disabled. To enable connection pooling, set the maxPoolSize property to an integer value greater than 0 (zero).
-
Manage connection pooling by using these Type 4 driver properties:
-
maxPoolSize
under maxpoolsize Property -
minPoolSize
under minPoolSize Property -
initialPoolSize
under initialPoolSize Property -
maxStatements
under maxStatements Property
-
-
When used with the DriverManager class, the Type 4 driver has a connection-pool manager that determines which connections are pooled together by a unique value for these combination of properties:
url catalog schema username password
Therefore, connections that have the same values for the combination of a set of properties are pooled together.
The connection-pooling property values used at the first connection of a given combination are effective throughout the life of the process. An application cannot change any of these property values after the first connection for a given combination.
3.6. Statement Pooling
The statement pooling feature allows applications to reuse the PreparedStatement object in the same way that they can reuse a connection in the connection pooling environment. Statement pooling is completely transparent to the application.
3.6.1. Guidelines for Statement Pooling
-
To enable statement pooling, set the
maxStatements
property to an integer value greater than 0 and enable connection pooling. For more information, see initialPoolSize Property and Connection Pooling. -
Enabling statement pooling for your JDBC applications might dramatically improve the performance.
-
Explicitly close a prepared statement by using the
Statement.close
method becausePreparedStatement
objects that are not in scope are also not reused unless the application explicitly closes them. -
To ensure that your application reuses a
PreparedStatement
, call either of these methods:-
Statement.close method
: called by the application. -
Connection.close method
: called by the application. All thePreparedStatement
objects that were in use are ready to be reused when the connection is reused.
-
3.6.2. Troubleshooting Statement Pooling
Note the following Type 4 driver implementation details if you are troubleshooting statement pooling:
-
The Type 4 driver looks for a matching
PreparedStatement
object in the statement pool and reuses thePreparedStatement
. The matching criteria include the SQL string, catalog, current schema, current transaction isolation, and result set holdability.If the Type 4 driver finds the matching
PreparedStatement
object, then the driver returns the samePreparedStatement
object to the application for reuse and marks thePreparedStatement
object as in use. -
The algorithm, earlier used are the first to go, is used to make room for caching subsequently generated
PreparedStatement
objects when the number of statements reaches themaxStatements
limit. -
The Type 4 driver assumes that any SQL CONTROL statements in effect at the time of execution or reuse are the same as those in effect at the time of SQL compilation.
If this condition is not true, then reuse of a
PreparedStatement
object might result in unexpected behavior. -
Avoid recompiling to yield performance improvements from statement pooling. The SQL executor automatically recompiles queries when certain conditions are met. Some of these conditions are:
-
A run-time version of a table has a different redefinition timestamp than the compile-time version of the same table.
-
An existing open operation on a table was eliminated by a DDL or SQL utility operation.
-
The transaction isolation level and access mode at execution time is different from that at the compile time.
-
-
When a query is recompiled, then the SQL executor stores the recompiled query; therefore, the query is recompiled only once until any of the previous conditions are met again.
-
The Type 4 driver does not cache
Statement
objects.
3.7. Thread-Safe Database Access
In the Type 4 driver, API layer classes are implemented as instance-specific objects to ensure thread safety:
-
TrafT4DataSource.getConnection()
is implemented as a synchronized method to ensure thread safety in getting a connection. -
Once a connection is made, the
Connection
object is instance-specific. -
If multiple statements are run on different threads in a single connection, then statement objects are serialized to prevent data corruption.
3.8. "Update . . . Where Current of" Operations
The fetch size on a ResultSet
must be 1 when performing an
update . . . where current of
cursor SQL statement.
If the value of the fetch size is greater than 1, the result of the
update . . . where current
of operation might be one of the following:
-
An incorrect row might be updated based on the actual cursor position.
-
An SQLException might occur because the cursor being updated might have already been closed.
The following is an example of setting a result set’s fetch size to 1
and executing an update . . . where current
of cursor SQL statement.
ResultSet rs ;
...
rs.setFetchSize( 1 ) ;
String st1 = rs.getCursorName() ;
Statement stmt2 =
connection.createStatement( ResultSet.TYPE_FORWARD_ONLY
, ResultSet.CONCUR_UPDATABLE
) ;
stmt2.executeUpdate( "UPDATE cat2.sch2.table1
SET j = 'update row' WHERE CURRENT OF "
+ st1
) ;
3.9. INFOSTATS Command for Obtaining Query Costs
The INFOSTATS command reports the roll-up costs of a particular query. INFOSTATS is a pass-through command that collects statistics for a prepared statement. Statistics are returned to the JDBC application as a result set as soon as the prepare is finished. The result set has these columns:
Column | Description |
---|---|
|
The unique identifier for the query. |
|
An estimate of the number of seconds of processor time it might take to execute the instructions for this query. A value of 1.0 is 1 second. |
|
An estimate of the number of seconds of I/O time (seeks plus data transfer) to perform the I/O for this query. |
|
An estimate of the number of seconds it takes for the messaging for this query. The estimate includes the time for the number of local and remote messages and the amount of data sent. |
|
An estimate of the maximum number of seconds to wait for an event to happen for this query. The estimate includes the amount of time to open a table or start an ESP process. |
|
Estimated cost associated to execute the query. |
|
Estimated number of rows that will be returned. |
3.9.1. Use of the INFOSTATS Command
The INFOSTATS command can only be used with PreparedStatement objects. The syntax is:
INFOSTATS cursor_name
where cursor_name
is the name of the prepared statement. If the cursor name is case-sensitive,
then enclose it in single quotes.
To get the cursor name, use the getStatementLabel()
method that is
defined for the Trafodion JDBC Type 4 driver with class:
org.trafodion.jdbc.t4.T4PreparedStatement: public String
getStatementLabel() ;
Considerations
-
You can use INFOSTATS in these methods only:
java.sql.Statement.executeQuery(String sql) java.sql.Statement.execute(String sql)
-
setCursorName
is not supported with INFOSTATS. -
If you invoke INFOSTATS incorrectly, the Type 4 driver issues this error:
Message: INFOSTATS command can only be executed by calling execute(String sql) method. Sqlstate HY000 Sqlcode 29180
Example of INFOSTATS
Statement s = conn.createStatement( ) ;
TrafT4PreparedStatement p =
(TrafT4PreparedStatement)conn.prepareStatement(
"SELECT * FROM t WHERE i = ?" ) ;
boolean results = s.execute( "INFOSTATS " + p.getStatementLabel() ) ;
if ( results )
{
ResultSet rs = s.getResultSet( ) ;
while ( rs.next( ) )
{
//process data
}
}
Sample Output
QueryID: MXID001001128212016369912348191_16_SQL_CUR_9829657
CPUTime: 0.09975778464794362
IOTime: 0.10584000146627659
MsgTime: 0.09800000134418951
IdleTime: 0.09800000134418951
TotalTime: 0.10584000146627659
Cardinality: 100.0
3.10. Internationalization Support
3.10.1. When String Literals Are Used in Applications
Internationalization support in the driver affects the handling of string literals. The Type 4 driver handles string literals in two situations.
-
When the driver processes an SQL statement. For example,
Statement stmt = connection.getStatement() ; stmt.execute( "SELECT * FROM table1 WHERE col1 = 'abcd'" ) ;
-
When the driver processes JDBC parameters. For example,
PreparedStatement pStmt = connection.prepareStatement( "SELECT * FROM table1 WHERE col1 = ?" ) ; pStmt.setString( 1, "abcd" ) ;
To convert a string literal from the Java to an array of bytes for processing by the Trafodion, the Type 4 driver uses the column type in the database.
3.10.2. Controlling String Literal Conversion by Using the Character-Set Properties
The Type 4 driver provides character-set mapping properties. These
properties allow you to explicitly define the translation of internal
SQL character-set formats to and from the Java string Unicode (UnicodeBigUnmarked
)
encoding.
The Type 4 driver provides character-set mapping properties through key values as shown in the following table.
Key | Default Value |
---|---|
|
|
|
|
|
|
A description of these character sets appears in table below, which summarizes the character sets supported by Trafodion.
Trafodion Character Set | Corresponding Java Encoding Set1 | Description |
---|---|---|
ISO88591 |
ISO88591_1 |
Single-character, 8-bit character-data type ISO88591 supports English and other Western European languages. |
1 Canonical Name for java.io
and java.lang
API.
For detailed information, see ISO88591 Property.
Using the Character-Set Properties
The java.sql.PreparedStatement
class contains the methods setString()
and setCharacterStream()
. These methods take a String and Reader
parameter, respectively.
The java.sql.ResultSet
class contains the methods getString()
and
getCharacterStream()
. These methods return a String and Reader, respectively.
Retrieving a Column
When you retrieve a column as a string (for example, call the
getString()
or getCharacterStream
methods), the Type 4 driver uses the
character-set mapping property key to instantiate a String object (where
that key corresponds to the character set of the column).
Example
The following SQL CREATE TABLE
statement creates a table that has an
ISO88591
column.
CREATE TABLE t1 ( c1 CHAR(20) CHARACTER SET ISO88591 ) ;
The JDBC program uses the following java command to set the ISO88591
property and issues the getString()
method.
java -Dt4jdbc.ISO88591=SJIS test1.java
// The following method invocation returns a String object, which
// was created using the "SJIS" Java canonical name as the charset
// parameter to the String constructor.
String s1 = rs.getString( 1 ) ; // get column 1 as a String
Setting a Parameter
When you set a parameter by using a String (for example, call the
setString()
method), the Type 4 driver uses the key’s value when
generating the internal representation of the String (where that
key corresponds to the character set of the column). The
character-set parameter to the String getBytes
method is the Java
Canonical name that corresponds to the column’s character set.
Example
The following SQL CREATE TABLE
statement creates a table
that has an ISO88591 column:
CREATE TABLE t1 ( c1 CHAR(20) CHARACTER SET ISO88591) ;
> java -DISO88591=SJIS test1.java
The following method invocation sets column one of stmt
to the String
"abcd" where "abcd" is encoded as SJIS. The charset parameter to the
String getBytes
method is SJIS stmt.setString( 1, "abcd" ) ;
.
Controlling What Happens on an Exception
You can use the translationVerification
property to explicitly define
the behavior of the driver if the driver cannot translate all or part of
an SQL parameter. The value portion of the property can be TRUE
or
FALSE
. (The default value is FALSE
).
If the translationVerification
property’s value is FALSE
and the driver
cannot translate all or part of an SQL statement, then the translation is
unspecified. In most cases, the characters that are untranslatable are
encoded as ISO88591 single-byte question marks ('?'
or 0x3F
). No
exception or warning is thrown.
If the translationVerification
property’s value is TRUE and the driver
cannot translate all or part of an SQL statement, then the driver throws an
SQLException
with the following text:
Translation of parameter to {0} failed. Cause: {1}
where {0}
is replaced with the target character set and {1}
is
replaced with the cause of the translation failure.
For more information, see translationVerification Property.
3.10.3. Localizing Error Messages and Status Messages
The Type 4 driver supports Internationalization through resource bundles for localized error messages and status messages. The driver uses a set of static strings from a property file to map error messages and status messages to their textual representation.
File-Name Format for the Localized-Messages File
The property file that has the messages must have a file name in the form:
T4Messages_xx.properties
where xx
is the locale name. The locale name is defined by the current
default locale or by the language property.
The Type 4 driver is shipped with an error messages and status messages
property file that contains the textual representation of errors and
status messages for the English locale. The file is named
T4Messages_en.properties
.
Localized-Message String Format
A localized message file contains strings in the form:
message=message_text
Example
driver_err_error_from_server_msg=An error was returned from the server.
Error: {0} Error detail: {1}
where the message
is driver_err_error_from_server_msg
. The
message_text
is: An error was returned from the server. Error: {0} Error detail: {1}
The pattern {n}
in message_text
, where n
equals 1, 2, 3, and
so forth, is a placeholder that is filled in at run time by the Type 4
driver. Any translation must include these placeholders.
Procedure to Create a Localized-Message File
-
Extract the
T4Messages_en.properties file
, which is in thejdbcT4-*.jar file
.Example
From a UNIX prompt, use the jar Java tool:
jar -x T4Messages_en.properties < jdbcT4-*.jar
-
Copy the file.
-
Edit the file and replace the English text with the text for your locale.
-
Save the file, giving it a file name that meets the naming requirements described under File-Name Format for the Localized-Messages File.
-
Put the file in a directory anywhere in the class path for running the JDBC application.
The new messages file can be anywhere in the class path for running the user application.
At run time, if driver cannot read the messages property file, the
driver uses the message
portion of the property as the text of the
message. For a description of the message portion, see the
Localized-Message String Format.
4. Type 4 Driver Properties
4.1. Summary of Type 4 Driver Properties
Type 4 driver properties that effect client-side operations are summarized in the following tables. For the detailed description, click the link provided in the property name.
Unless otherwise noted in the brief description, the particular
property applies to the DataSource object, DriverManager object, and
ConnectionPoolDataSource object.
|
4.1.1. Client-Side Properties
Connection-Control Properties
Property Name | Description | Default Value |
---|---|---|
Specifies the registered DataSource or ConnectionPoolDataSource name. (Can be set only on the DriverManager object.) |
None. |
|
Sets the time limit that a connection can be attempted before the connection disconnects. |
60 (seconds) |
|
Sets a time limit that the driver waits for a reply from the database server. |
0 (No network timeout is specified. |
Pooling Management Properties
Property Name | Description | Default Value |
---|---|---|
Sets the initial connection pool size when connection pooling is used with the Type 4 driver. (Ignored for connections made through the ConnectionPoolDataSource object.) |
-1 (Do not create an initial connection pool.) |
|
Sets the number of seconds that a physical connection can remain unused in the pool before the connection is closed. |
0 (Specifies no limit.) |
|
Sets the maximum number of physical connections that the pool can contain. |
-1 (Disables connection pooling.) |
|
Sets the total number of PreparedStatement objects that the connection pool should cache. |
0 (Disables statement pooling.) |
|
Limits the number of physical connections that can be in the free connection pool. |
-1 (The minPoolSize value is ignored.) |
Internationalization Properties
Property Name | Description | Default Value |
---|---|---|
Sets character-set mapping that corresponds to the ISO88591 character set. |
ISO88591_1 |
|
Sets character-set mapping that corresponds to the KANJI character set. |
SJIS (which is shift-JIS, Japanese) |
|
Sets character-set mapping that corresponds to the KSC5601 character set. |
ECU_KR (which is KS C 5601, ECU encoding, Korean) |
|
Sets the language used for error messages. |
None. |
|
Defines the behavior of the driver if the driver cannot translate all or part of an SQL statement or SQL parameter. |
FALSE |
Logging and Tracing Properties
Property Name | Description | Default Value |
---|---|---|
Sets the name of the logging file for the Type 4 driver. |
The name is defined by the following pattern: |
|
Sets the logging levels that control logging output for the Type 4 driver. |
OFF |
Miscellaneous Client-Side Properties
Property Name | Description | Default Value |
---|---|---|
Specifies the registered source name. |
None. |
|
Provides the benefits of bulk fetch when rows are fetched from a |
4 kilobytes |
|
Specifies the location of the properties file that contains keyword-value pairs that specify property values for configuring the Type 4 driver. |
None. |
|
Specifies the rounding behavior of the Type 4 driver. |
ROUND_DOWN |
4.1.2. Server-Side Properties
The Type 4 driver properties that effect server-side operations are
summarized in the following tables. Unless otherwise noted in the
description, the particular property applies to the DataSource object,
DriverManager
object, and ConnectionPoolDataSource
object.
Type 4 Driver Server-Side Properties
Property Name | Description | Default Value |
---|---|---|
Sets the default catalog used to access SQL objects referenced in SQL statements if the SQL objects are not fully qualified. |
None. Must be "TRAFODION" in the current release. |
|
Sets the number of seconds a connection can be idle before the connection is physically closed by DCS. |
-1 (Use the ConnTimeout value set on the server data source.) |
|
Sets the password value for passing to the database. Can also change the password. |
Empty string. |
|
Sets the database schema that accesses SQL objects referenced in SQL statements if the SQL objects are not fully qualified. |
None. |
|
Sets the URL value for the database. Can be set only on the |
None. |
|
Sets the user value for the database. |
None. |
4.2. How to Specify JDBC Type 4 Properties
The Type 4 JDBC driver properties configure the driver. These properties can be specified in a data source, a connection URL (the primary IP address or host name on the database), a properties file, or in the java command line.
Java properties have the form:
key=value
At run time, the driver looks for a specific set of property keys and takes action based on their associated values.
4.2.1. Where to Set Properties
-
For connections made through a
DataSource
or aConnectionPoolDataSource
, set the property on theDataSource
or theConnectionPoolDataSource
object. -
For the
DriverManager
class, set properties in either of two ways:-
Using the option
-Dproperty_name=property_value
in the command line. -
Using the
java.util.Properties
parameter in thegetConnection()
method of theDriverManager
class.
-
4.2.2. Creating and Using a Properties File
JDBC applications can provide property values to configure a connection by using a file that contains properties for the JDBC driver. This property file is passed as a java command-line parameter. The format to enter the properties file in the command line is:
-Dt4jdbc.properties=<path of the properties file on disk>`
Example
-Dt4jdbc.properties=C:\temp\t4props\myprops.properties
To create the file, use the editor of your choice on your workstation to
type in the property values. The entries in properties file must have a
property_name=property_value
value-pair format:
property_name=property_value
Example
maxStatements=1024
To configure a DataSource
connection, the properties file might contain
property names and values as indicated in the following list:
url=jdbc:t4jdbc://<primary IP addr or host name of database>:23400/
user=database_username
password=mypassword
description=<a string>
catalog=TRAFODION
schema=myschema
maxPoolSize=20
minPoolSize=5
maxStatements=20
loginTimeout=15
initialPoolSize=10
connectionTimeout=10
T4LogLevel=OFF
T4LogFile=/mylogdirectory/mylogfile
4.2.3. Setting Properties in the Command Line
When a Type 4 driver property is specified on the command line through
the java -D
option, the property must include the prefix: t4jdbc
.
This notation, which includes the period (.), ensures that all the Type 4 driver property names are unique for a Java application.
Example
The maxStatements property becomes:
-Dt4jdbc.maxStatements=10
4.2.4. Precedence of Property Specifications
If a particular property is set several ways by an application, the value used depends on how the value was set according to the following order of precedence:
-
Set on the
DataSource
object,DriverManager
object, orConnectionPoolDataSource
object. -
Set through the
java.util.Properties
parameter in thegetConnection
method ofDriverManager
class. -
Set the property in a properties file specified by the
t4jdbc.properties
property. -
Set the
-Dt4jdbc.property_name=<property value>
in the java command line.
For more information, see order of precedence for properties specified in various ways for use with the Driver Manager.
5. Type 4 Driver Property Descriptions
The properties are listed in alphabetic order with their descriptions. For the properties summarized in categories, see Summary of Type 4 Driver Properties.
5.1. catalog Property
The catalog
property sets the default catalog used to access SQL objects
referenced in SQL statements if the SQL objects are not fully qualified.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object. For information about how to set
properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: none
Example
Specifying the catalog TRAFODION:
catalog=TRAFODION
5.2. connectionTimeout Property
The connectionTimeout
property sets the number of seconds a connection
can be idle before the connection is physically closed by DCS.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object. For information about how to set
properties, see
How to Specify JDBC Type 4 Properties.
Data type: short
Units: seconds
Default: -1 (Use the ConnTimeout value set on the server-side data source.)
Range: -1, 0 to 32767
-
Zero (0) specifies infinity as the timeout value.
-
A non-zero positive value overrides the value set on the Trafodion data source, if allowed by the connectivity settings.
-
A negative value is treated as -1.
Example
Consider the following scenario.
Even if a connection is not being used, it takes up resources. The application abandons connections; that is, the application does not physically close a connection after the application finishes using the connection.
However, you can configure the connection to close itself after 300 seconds by setting
the connectionTimeout
property. Then, when a connection is not referenced for 300 seconds,
the connection automatically closes itself.
In this example, the specification to set the connectionTimeout
property is:
connectionTimeout=300
5.3. fetchBufferSize Property
The fetchBufferSize
property provides the benefits of bulk fetch.
This property sets the value in kilobytes (KB) of the size of the fetch
buffer that is used when rows are fetched from a ResultSet
object after
a successful executeQuery()
operation on a statement.
Set this property on a DriverManager
object. For information about how to set
properties, see
How to Specify JDBC Type 4 Properties.
Data type: short
Default size: 4
Range: 4 through 32767
-
Zero and negative values are treated as default values.
-
The Type 4 driver guarantees that the number of rows internally fetched will be no less than the minimum of the row size (set using the
setFetchSize
method) and the number of rows that will fit in the memory specified by thesetFetchSize
(set using the property).
Example
fetchBufferSize=32
5.4. initialPoolSize Property
The initialPoolSize
property sets the initial connection pool size when
connection pooling is used with the Type 4 driver.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object. For information about how to set
properties, see
How to Specify JDBC Type 4 Properties.
The driver creates n connections (where n is initialPoolSize
) for
each connection pool when the first connection is requested. For
example, if initialPoolSize
is set to 5
for a data source, then the driver
attempts to create and pool five connections the first time the
application calls the data source’s getConnection()
method.
Data type: int
Units: number of physical connections
Default: -1 (Do not create an initial connection pool.)
Range: -1 to maxPoolSize
-
Any negative value is treated as -1.
-
Values can be less than
minPoolSize
, but must not exceedmaxPoolSize
. If the specified value is greater thanmaxPoolSize
, themaxPoolSize
property value is used.
Example
initialPoolSize=10
5.5. ISO88591 Property
The ISO88591
character-set mapping property corresponds to the
SQL ISO88591 character set, which is a single-byte
8-bit character set for character data types. This property supports
English and other Western European languages. For more information, see
Internationalization Support.
Set this property on a DataSource
object or DriverManager
object. This
property is ignored for connections made through the
ConnectionPoolDataSource
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: ISO88591_1
The value can be any valid Java Canonical Name as listed in the "Canonical Name for java.io and java.lang API" column of the Java documentation.
For more information, see Internationalization Support.
5.6. KANJI Property
The KANJI
character-set mapping property corresponds to the
SQL KANJI character set, which is a double-byte character set widely used on Japanese mainframes.
This property is a subset of Shift JIS: the double character portion. The encoding for
this property is big endian.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: SJIS (which is shift-JIS, Japanese)
Example
java -Dt4jdbc.KANJI=SJIS
For more information, see Internationalization Support.
5.7. KSC5601 Property
The KSC5601
character-set mapping property corresponds to the
SQL KSC5601 character set, which is a double-byte
character set.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: ECU_KR (which is KS C 5601, ECU encoding, Korean)
The value can be any valid Java Canonical Name as listed in the "Canonical Name for java.io and java.lang API" column of the Java documentation.
Example
java -Dt4jdbc.KSC5601=ECU_KR
For more information, see Internationalization Support.
5.8. language Property
The language
property sets the language used for the error messages. For
more information about using this property, see
Localizing Error Messages and Status Messages
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: none
The value can be any valid Java Canonical Name as listed in the "Canonical Name for java.io and java.lang API" column of the Java documentation.
Example
To set the language to shift-JIS, Japanese:
language=SJIS
5.9. loginTimeout Property
The loginTimeout
property sets the time limit that a connection can be
attempted before the connection disconnects. When a connection is
attempted for a period longer than the set value, in seconds, the
connection disconnects.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: int
Units: seconds
Default: 60
Range: 0 to 2147483647
If set to 0 (zero), no login timeout is specified.
5.10. maxIdleTime Property
The maxIdleTime
property determines the number of seconds that a
physical connection should remain unused in the pool before the
connection is closed. 0 (zero) indicates no limit.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: int
Units: seconds
Default: 0 (No timeout)
Range: 0 through 2147483647
Any negative value is treated as 0, which indicates that no time limit applies.
Example
To set the maximum idle time to 5 minutes (300 seconds):
java -Dt4jdbc.maxIdleTime=300
5.11. maxPoolSize Property
The maxPoolSize
property sets the maximum number of physical connections
that the pool can contain. These connections include both free
connections and connections in use. When the maximum number of physical
connections is reached, the Type 4 driver throws an SQLException and
sends the message, Maximum pool size is reached.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: int
Units: number of physical connections
Default: -1 (Disables connection pooling.)
Range: -1, 0 through 2147483647, but greater than minPoolSize
The value determines connection-pool use as follows:
-
Any negative value is treated like -1.
-
0 means no maximum pool size.
-
A value of -1 disables connection pooling.
Any positive value less than minPoolSize
is changed to the minPoolSize
value.
5.12. maxStatements Property
The maxStatements
property sets the total number of PreparedStatement
objects that the connection pool should cache. This total includes both
free objects and objects in use.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: int
Units: number of objects
Default: 0 (Disables statement pooling.)
Range: 0 through 2147483647
The value 0 disables statement pooling. Any negative value is treated like 0 (zero).
To improve performance, we recommend that you enable statement pooling for your JDBC applications because this pooling can dramatically help the performance of many applications. |
Statement pooling can be in effect only if connection pooling is enabled. |
Example
To specify statement pooling, type:
maxStatements=10
5.13. minPoolSize Property
The minPoolSize
property limits the number of physical connections that
can be in the free connection pool.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: int
Default: -1 (The minPoolSize value is ignored.)
Range: -1, 0 through n, but less than maxPoolSize
-
Any negative value is treated like -1.
-
Any value greater than
maxPoolSize
is changed to themaxPoolSize
value. -
The value of
minPoolSize
is set to -1 whenmaxPoolSize
is -1. The value determines connection pool use as follows:-
When the number of physical connections in the free pool reaches the
minPoolSize
value, the Type 4 driver closes subsequent connections by physically closing them and not adding them to the free pool. -
0 (zero) means that the connections are not physically closed; the connections are always added to the free pool when the connection is closed.
-
Example
Use the following specification to set the minPoolSize
value to 1, which ensures that one connection is always retained:
minPoolSize=1
5.14. networkTimeout Property
The networkTimeout
property sets a time limit that the driver waits for
a reply from the database server. When an operation is attempted for a
period longer than the set value, in seconds, the driver stops waiting
for a reply and returns an SQLException to the user application.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Be careful when using this property. A network timeout causes the socket connection between the Type 4 driver and the connectivity server to timeout. If the server is engaged in a transaction or an SQL operation, then the server continues to perform that transaction or operation until the transaction or operation fails, the transaction manager times out, or the server realizes that the Type 4 driver client has gone away. A network timeout can result in an open transaction or operation that continues for a significant time before failing or rolling back. As a result of a network timeout, the connection becomes unavailable. |
Data type: int
Units: seconds
Default: 0 (No network timeout is specified.)
0 through to 2147483647
5.15. password Property
The password
property sets the password value for passing to the DCS
server. By using this property, you can also change the password. The
password is encrypted when it is passed to the server.
The format for specifying the password is:
password=old [, new, new ]
-
old
is the current password -
new
is the new password. Passwords must be 6 to 8 characters long and cannot contain double quotes (").
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: empty string
Example
password=eye0weU$
5.16. properties Property
The properties
property specifies the location of the properties file
that contains keyword-value pairs that specify property values for
configuring the Type 4 driver. For more information, see
Creating and Using a Properties File.
5.17. reserveDataLocators Property
The reserveDataLocators
property sets the number of data locators to be
reserved for a process that stores data in a LOB table.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: int
Units: number of data locators to be reserved
Default: 100
Range: 1 to 9,223,372,036,854,775,807 (2**63 -1)
Do not set a value much greater than the number of data locators actually needed. If the specified value is 0 (zero) or less, the default value (100) is used.
Base the setting of the value of the reserveDataLocators
property on the
application profile being executed. If the application inserts a large
number of LOB items, then a higher value of the reserveDataLocators
property
can prevent frequent updating of the ZZ_DATA_LOCATOR
value in the LOB
table. However, if the application inserts only a small number of LOB
items, then a smaller value is better. If a large value is used, then holes
(unused data-locator numbers) could occur in the LOB table. These holes
represent unused space.
Also, the administrator should avoid setting high values for the
reserveDataLocators
(for example, in the range of trillions or so).
Setting high values prevents other Type 4 applications that use LOB
table from reserving data locators.
For additional information about data locator use, see Reserving Data Locators.
To change this value for a JDBC application, specify this property from the command line.
Example
The following command reserves 150 data
locators for program class myProgramClass
.
java -Dt4jdbc.reserveDataLocators=150 myProgramClass
5.18. roundingMode Property
The roundingMode
property specifies the rounding behavior of the Type 4
driver. For example, if the data is 1234.127 and column definition is
NUMERIC(6, 2)
and the application does setDouble()
and getDouble()
,
then the value returned is 1234.12, which is truncated as specified by the
default rounding mode, ROUND_DOWN
.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: ROUND_DOWN
Values for roundingMode are:
ROUND_CEILING
ROUND_DOWN
ROUND_FLOOR
ROUND_HALF_DOWN
ROUND_HALF_EVEN
ROUND_HALF_UP
ROUND_UNNECESSARY
ROUND_UP
-
For the definition of rounding mode values, see the java.math.BigDecimal documentation.
-
If the application sets erroneous values for the
roundingMode
property, no error is thrown by the Type 4 driver. The driver usesROUND_DOWN
value instead. -
To have the application get the
DataTruncation
exception when data is truncated, set theroundingMode
property toROUND_UNNECESSARY
.
5.19. schema Property
The schema
property sets the database schema that accesses SQL objects
referenced in SQL statements if the SQL objects are not fully qualified.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: none
Example
schema=sales
5.20. T4LogFile Property
The T4LogFile
property sets the name of the logging file for the Type 4 driver.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default file name is defined by the following pattern:
%h/t4jdbc%u.log
where
-
/
represents the local pathname separator. -
%h
represents the value of the user.home system property. %u represents a unique number to resolve conflicts.
Any valid file name for your system is allowed.
If you explicitly specify a log file, then that file is overwritten each time
a FileHandler
is established using that file name.
To retain previously created log files, use the standard `java.util.logging `file syntax to append a unique number onto each log file.
Example
You can have the following property in a data source:
T4LogFile = C:/temp/MyLogFile%u.log
That name causes the Type 4 driver to create a new log file using a unique name for each connection made through that data source.
Example
C:/temp/MyLogFile43289.log
C:/temp/MyLogFile87634.log
C:/temp/MyLogFile27794.log
If you explicitly specify a log file that is not fully qualified, the Type 4 driver creates the file in the current working directory, for example, in the directory from which the JVM was invoked.
For detailed information about java.util.logging, see the logging summary documentation.
5.21. T4LogLevel Property
The T4LogLevel
property sets the logging levels that control logging
output for the Type 4 driver. The Java package java.util.logging logs
error messages and traces messages in the driver.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: OFF
Logging Levels
Level | Description |
---|---|
|
A special level that turns off logging; the default setting. |
|
Indicates a serious failure; usually applies to SQL exceptions generated by the Type 4 driver. |
|
Indicates a potential problem, which usually applies to SQL warnings generated by the Type 4 driver. |
|
Provides informational messages, typically about connection pooling, statement pooling, and resource usage. This information can help in tuning application performance. |
|
Provides static configuration messages that can include property values and other Type 4 driver configuration information. |
|
Provides tracing information from the Type 4 driver methods described in the Type 4 driver API. The level of tracing is equivalent
to the level of tracing provided when calling the |
|
Indicates a detailed tracing message for which internal Type 4 driver methods provide messages. These messages can be useful in debugging the Type 4 driver. |
|
Indicates a highly detailed tracing message. The driver provides detailed internal data messages that can be useful in debugging the Type 4 driver. |
|
Logs all messages. |
Example
To enable tracing, use the t4jdbc.T4LogLevel
property specified in the command line:
-Dt4jdbc.T4LogLevel=FINE
5.21.1. T4LogLevel Considerations
-
If a security manager is defined by your application using an AppServer, then
LoggingPermission
must be must be granted in thejava.policy
file as follows:permission java.util.logging.LoggingPermission "control", "" ;
-
The Type 4 driver is not designed to inherit the
java.util.logging.FileHandler.level
settings at program startup.
5.22. translationVerification Property
The translationVerification
property defines the behavior of the driver
if the driver cannot translate all or part of an SQL statement or SQL
parameter.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
The value can be TRUE or FALSE.
Data type: String
Default: FALSE
Value | Scenario | What Happens |
---|---|---|
|
The driver is unable to translate all or part of an SQL statement, then the translation is unspecified. |
In most cases, the characters that are untranslatable are encoded as ISO88591 single-byte question marks ( |
|
The driver cannot translation all or part of an SQL statement or parameter. |
The driver throws an SQLException with this text. |
If the translationVerification property is set to TRUE, then the process can
use significantly more system resources. For better performance, set this property to FALSE.
|
For more information, see Internationalization Support.
5.23. url Property
The url
property sets the URL value for the database.
This property is used in the DriverManager
object. The format
to specify the URL is:
jdbc:t4jdbc//<primary IP addr or hostname of database>:23400/[:]
[ property=value [ ; property2=value ] ... ]
where <primary IP_addr or hostname of database>:23400>
specifies the location of the database.
Data type: String
Default: none
Example
url=jdbc:t4jdbc://mynode.mycompanynetwork.net:23400/
5.23.1. url Property Considerations
-
If the url parameter is not specified and
DriverManager.getConnection()
is called, then the Type 4 driver throws an SQLException. -
If you use a literal IPV4 or IPV6 address in a URL, note these guidelines:
-
For IPV6 only: enclose the address in brackets (
[
and]
). -
The port number is optional according to both the IPV4 and IPV6 standard.
-
The default port number for the database is
23400
.
-
5.24. user Property
The user
property sets the role value for the connectivity service. The
role name passed must have adequate access permissions for SQL data
accessed through the connectivity service.
Set this property on a DataSource
object, ConnectionPoolDataSource
object, or DriverManager
object.
For information about how to set properties, see
How to Specify JDBC Type 4 Properties.
Data type: String
Default: empty string
Example
user=System_rolename
6. Type 4 Driver Compliance
6.1. Compliance Overview
The Type 4 driver conforms where applicable to the JDBC 3.0 API specification. However, this driver differs from the JDBC standard in some ways. This subsection describes the JDBC methods that are not supported, the methods and features that deviate from the specification, and features that are Trafodion extensions to the JDBC standard. JDBC features that conform to the specification are not described in this subsection.
In addition, this chapter lists features of Trafodion SQL that are not supported by the Trafodion JDBC Type 4 driver, other unsupported features, and restrictions.
6.2. Unsupported Features
These methods in the java.sql package throw an SQLException with the
message Unsupported feature - <method-name>
:
Method | Comments |
---|---|
|
The particular |
|
The particular |
|
The particular |
|
The particular |
|
The particular |
The following methods in the java.sql package throw an SQLException with
the message Auto generated keys not supported
:
Method | Comments |
---|---|
|
Automatically generated keys are not supported. |
|
Automatically generated keys are not supported. |
The following methods in the java.sql package throw an SQLException with
the message Data type not supported
:
Method | Comments |
---|---|
|
The particular data type is not supported. |
The following interfaces in the java.sql
package are not implemented in
the Type 4 driver:
Method | Comments |
---|---|
|
The underlying data types are not supported by Trafodion. |
The following interfaces in the javax.sql
package are not implemented in the Type 4 driver:
Method | Comments |
---|---|
|
Distributed Transactions, as described in the JDBC 3.0 API specification, are not yet implemented. |
For additional information about deviations for some methods, see Deviations.
6.3. Deviations
The following table lists methods that differ in execution from the JDBC specification. When an argument in a method is ignored, the Type 4 driver does not throw an SQLException,thus allowing the application to continue processing. The application might not obtain the expected results, however. Other methods listed do not necessarily throw an SQLException, unless otherwise stated, although they differ from the specification.
The java.sql.DatabaseMetaData.getVersionColumns() method mimics the
java.sql.DatabaseMetaData.getBestRowIdentifier() method because
Trafodion SQL does not support SQL_ROWVER (a columns function that
returns the column or columns in the specified table, if any, that are
automatically updated by the data source when any value in the row is
updated by any transaction).
|
Method | Comments |
---|---|
|
The column is added to the column data, but its value is set to NULL because Trafodion SQL does not support the column type for these types: |
|
The column is added to the column data, but its value is set to NULL because Trafodion SQL does not support the column type for these types: |
|
BASE_TYPE is added to the column data, but its value is set to NULL because Trafodion SQL does not support the base type. |
|
Mimics the |
|
The Type 4 driver does not support the scroll-sensitive result set type, so an SQL Warning is issued if an application requests that type. The result set is changed to a scroll-insensitive type. |
|
The fetch direction attribute is ignored. |
|
In some instances, drops the connection to the server instead of just canceling the query. You must then reconnect to the server.
Note that the connection is dropped if |
|
Because Trafodion SQL parses the escape syntax, disabling escape processing has no effect. |
|
The fetch direction attribute is ignored. |
6.4. Trafodion Extensions
The Trafodion extensions to the JDBC standard implemented in the Type 4 driver are as follows.
6.4.1. Internationalization of Messages
The Type 4 driver is designed so that Java messages can be adopted for various languages. The error messages are stored outside the source code in a separate property file and retrieved dynamically based on the locale setting. The error messages in different languages are stored in separate property files based on the language and country. This extension does not apply to all messages that can occur when running JDBC applications.
For details, see Localizing Error Messages and Status Messages.
6.4.2. Additional DatabaseMetaData APIs
APIs added to the T4DatabaseMetaData
class provide these capabilities:
-
Get a description of a table’s synonyms.
public java.sql.ResultSet getSynonymInfo(String catalog, String schema, String table) throws SQLException
6.5. Conformance of DatabaseMetaData Methods' Handling of Null Parameters
This topic describes how the Type 4 driver determines the value of null parameters passed as a parameter value on DatabaseMetaData methods. Since other vendors might implement the JDBC specification differently, this information explains the Type 4 driver results on the affected queries.
This implementation applies to methods that take parameters that can represent a pattern. The names of these parameters have the format:
attributePattern
The many methods of the java.sql.DatabaseMetaData class are affected;
for example, the getColumns()
method.
For another example, schema is the attribute in the parameter
schemaPattern
, which is a parameter to the java.sql.ResultSet.getAttributes
method.
public ResultSet getAttributes( String catalog
, String schemaPattern
, String typeNamePattern
, String attributeNamePattern
) throws SQLException
If the application passes a null value, the null is treated as follows:
-
If a parameter name contains the suffix Pattern, the null is interpreted as a
%
wild card. -
If the parameter name does not contain the suffix
Pattern
, nulls are interpreted as the default value for that parameter.
Using this example, null parameters are interpreted as follows:
|
The default catalog name. |
|
A |
6.6. Type 4 Driver Conformance to SQL Data Types
6.6.1. JDBC Data Types
The following table shows the JDBC data types that are supported by Type 4 driver and their corresponding Trafodion SQL data types:
JDBC Data Type | Support by JDBC Driver for Trafodion SQL | Trafodion SQL Data Type |
---|---|---|
|
No |
Not applicable. |
|
Yes |
|
|
Data type is mapped by Trafodion SQL. Data type varies from that used for table creation. |
|
|
Data type is mapped by Trafodion SQL. Data type varies from that used for table creation. |
|
|
Yes |
|
|
Yes |
|
|
Yes |
|
|
No |
Not applicable. |
|
Yes |
|
|
Yes |
|
|
Yes |
|
|
No |
Not applicable. |
|
Data type is mapped by Trafodion SQL. Data type varies from that used for table creation. |
|
|
Yes. Maximum length is 4018. |
|
|
No |
Not applicable. |
|
Yes |
|
|
Yes |
|
|
No |
Not applicable. |
|
Yes |
|
|
No |
Not applicable. |
|
Yes |
|
|
Yes |
|
|
Data type is mapped by Trafodion SQL. Data type varies from that used for table creation. |
|
|
Data type is mapped by Trafodion SQL. Data type varies from that used for table creation. |
|
|
Yes |
|
|
Data type is mapped by Trafodion SQL. Data type varies from that used for table creation. |
|
|
No |
Not applicable. |
1 Because of mapping provided by Trafodion, a ResultSet.getObject()
method returns a string object instead of an array of bytes.
The Type 4 driver maps the following data types to the JDBC data type Types.OTHER
:
INTERVAL YEAR(p)
INTERVAL YEAR(p) TO MONTH
INTERVAL MONTH(p)
INTERVAL DAY(p)
INTERVAL DAY(p) TO HOUR
INTERVAL DAY(p) TO MINUTE
INTERVAL DAY(p) TO SECOND
INTERVAL HOUR(p)
INTERVAL HOUR(p) TO MINUTE
INTERVAL HOUR(p) TO SECOND
INTERVAL MINUTE(p)
INTERVAL MINUTE(p) TO SECOND
INTERVAL SECOND(p)
6.7. Floating-Point Support
The Type 4 driver supports only IEEE floating-point data to be passed between the application client and the Type 4 driver.
6.8. SQLJ Support
The Type 4 driver supports non-customized SQLJ applications, but does not support customized SQLJ applications.
6.9. JDBC 3.0 Features Not Supported by the Type 4 Driver
These features are not required for JDBC 3.0 compliance, and they are not supported by the Trafodion JDBC Type 4 driver.
-
Multiple result sets returned by batch statements.
-
Database savepoint support. (Not provided in Trafodion SQL )
-
Retrieval of auto generated keys.
-
Transform group and type mapping.
-
Relationship between connector architecture and JDBC 3.0 SPI.
-
Secured socket communication or encryption for the interaction between the Type 4 driver and DCS.
-
Security context (user name and password) implicit propagation from AppServer to the Type 4 driver.
-
IPV6 protocol stack. (IPV6 addressing is emulated over IPV4 on the Trafodion platform - server side)
-
Distributed transactions.
6.10. Restrictions
-
The Type 4 driver supports only database features that are supported by Trafodion SQL and SPJ. Therefore, the Type 4 driver is not fully compliant with JDBC 3.0 specifications.
-
The Type 4 driver depends on DCS (Data Connectivity Service) for all server side manageability related features.
7. Tracing and Logging Facilities
The Type 4 driver provides two tracing and logging facilities:
-
Standard JDBC tracing and logging functionality as defined by the JDBC standard
-
Type 4 driver logging facility
Server-side tracing (logging) is enabled by configuring DCS.
7.1. Standard JDBC Tracing and Logging Facility
The JDBC standard provides a logging and tracing facility, which allows
tracing JDBC method calls by setting the log writer. To set the log
writer, either call the setLogWriter()
method on the DriverManager
class
or call the setLogWriter()
method on the DataSource
class
(or ConnectionPoolDataSource
class).
-
A
DriverManager
log writer is a character output stream to which all logging and tracing messages for all connections made through theDriverManager
are printed. This stream includes messages printed by the methods of this connection, messages printed by methods of other objects manufactured by the connection, and so on. TheDriverManager
log writer is initially null, that is, the default is for logging to be disabled.
For information about using the setLogWriter method, see the DriverManager class API.
-
A
DataSource
log writer is a character output stream to which all logging and tracing messages for this data source are printed. This stream includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data-source-specific log writer are not printed to the log writer associated with thejava.sql.DriverManager
class. When aDataSource
object is created, the log writer is initially null; that is, the default is for logging to be disabled.
For information about using the setLogWriter method, see the DriverSource interface API.
7.2. The Type 4 Driver Logging Facility
The Type 4 driver Logging facility allows you to retrieve internal tracing information, which you can use in debugging the driver. It also allows you to capture error and warning messages.
In addition to the standard JDBC tracing and logging facility, the Type 4 driver provides an independent logging facility (Type 4 Driver Logging). The Type 4 Driver Logging provides the same level of logging and tracing as the standard JDBC tracing and logging facility with the following additional information:
-
More detail about the internals of the Type 4 driver and internal tracing information
-
Type 4 driver performance-tuning information
-
Finer control over the amount and type of logging information
-
Error and warning messages
7.2.1. Controlling Type 4 Driver Logging Output
The Type 4 driver provides two properties that you can use to control logging output.
-
T4LogLevel
: Specifies the level of logging. For information about using this property, see T4LogLevel Property. -
T4LogFile
: Specifies the file to which the driver is to write logging information. For information about using this property, see T4LogFile Property.
If the application sets several property values, see Precedence of Property Specifications to determine which setting applies.
Example
These properties file entries set the logging level to SEVERE and specify a log file name:
T4LogLevel= SEVERE
T4LogFile=c:/T4logfile1.log
7.2.2. Message Format
The format of the trace output is
sequence-number ~ time-stamp ~ thread-id
~ [connection-id] ~ [server-id] ~ [dialogue-id]
~ [class].[method][(parameters)] ~ [text]
Identifier | Provides |
---|---|
|
A unique sequence number in increasing order. |
|
The time of the message, for example 10/17/2004 12:48:23. |
|
The thread identifier within the Java VM. |
|
If applicable, a unique ID for the connection associated with the message. |
|
If applicable, information about the connectivity server associated with the message. The server-id is of the form: |
|
If applicable, the |
|
If applicable, the name of the class that issued the logging request. |
|
If applicable, the name of the method that issued the logging request. |
|
An optional set of parameters associated with the method. |
|
Optional textual information for the message. |
The tilde (~ ) character separates message parts. This separator
allows you to format the message using tools, such as Excel, Word, UNIX
sort, and so forth. For example, you can format and sort messages based
on sequence number or thread ID. You can edit the log file and change
the separator (the tilde) to any character you want. When possible,
numbers (such as thread-id and sequence-number ) are prepended with
zeros (0) to allow for readable formatting.
|
7.2.3. Examples of Logging Output
-
Output where
T4LogLevel
is set toSEVERE
:00000036 ~ Dec 8, 2006 10:05:55 AM PST ~ 10 ~ 4508606 ~ null ~ null ~ T4Messages.createSQLException("en_US", "socket_write_error", "null") ~
-
Output where
T4LogLevel
is set toFINER
:0000006 ~ 10/22/2004 10:34:45 ~ 001234 ~ 0049934 ~ FetchRowSetMessage ~ marshal ~ Entering FetchRowSetMessage.marshal( en_US , 48345 , STMT_MX_8843 , 5 , 4192, , 0 , 0 )
8. Messages
8.1. About the Message Format
Messages are listed in numerical SQLCODE order. Descriptions include:
SQLCODE SQLSTATE message-text
Cause [ What occurred to trigger the message.]
Effect [ What is the result when this occurs. ]
Recovery [ How to diagnose and fix the problem. ]
8.2. Getting Help
Some messages have no recovery information. Please contact user@trafodion.apache.org for assistance.
8.3. Type 4 Driver Error Messages
8.3.1. 01032 08S01
01032 08S01 Communication link failure. The server timed out or disappeared.
Cause: The connection timed out.
Effect: Operation fails.
Recovery: Reconnect. Set the connection timeout to an appropriate value.
8.3.2. 01056 25000
01056 25000 Invalid transaction state.
Cause: Transaction state is incorrect.
Effect: Operation fails.
Recovery: Retry.
8.3.3. 01118 S1008
01118 S1008 Operation canceled.
Cause: The operation was canceled.
Effect: Operation fails.
Recovery: Retry operation.
8.3.4. 08001 HY000
08001 HY000 Retry attempts to connect to the datasource failed. May be
ODBC server not able to register to the ODBC service process.
Cause: A server error.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server errors and to analyze accompanying errors and warnings.
8.3.5. 08004 HY000
08004 HY000 Data source rejected establishment of connection since the
ODBC server is connected to a different client now
Cause: Connection with server has been lost. Server is now connected to a different connection.
Effect: Operation fails.
Recovery: Reconnect.
8.3.6. 29001 HYC00
HYC00 Unsupported feature - {0}
Cause: The feature listed is not supported by the JDBC driver.
Effect: An unsupported exception is thrown, and a NULL resultSet
is returned.
Recovery: Remove the feature functionality from the program.
8.3.7. 29002 08003
29002 08003 Connection does not exist
Cause: An action was attempted when the connection to the database was closed.
Effect: The database is inaccessible.
Recovery: Retry the action after the connection to the database is established.
8.3.8. 29003 HY000
29003 HY000 Statement does not exist
Cause: A validation attempt was made on the getter or exec invocation on a closed statement.
Effect: The getter or exec invocation validation fails.
Recovery: Issue validateGetInvocation()
or validateExecDirectInvocation
when the statement is open.
8.3.9. 29004 HY024
29004 HY024 Invalid transaction isolation value.
Cause: An attempt was made to set the transaction isolation level to an invalid value.
Effect: TrafT4Connection.setTransactionIsolation
does not set the transaction isolation value.
Recovery: Valid isolation values are:
SQL_TXN_READ_COMMITTED
,
SQL_TXN_READ_UNCOMMITTED
,
SQL_TXN_REPEATABLE_READ
, and
SQL_TXN_SERIALIZABLE
.
If no isolation value is specified, the default is SQL_TXN_READ_COMMITTED
.
8.3.10. 29005 HY024
29005 HY024 Invalid ResultSet type
Cause: An attempt was made to set an invalid ResultSet
Type value.
Effect: The SQL Statement call with the resultSetType
parameter fails.
Recovery: Valid ResultSet types are:
TYPE_FORWARD_ONLY
,
TYPE_SCROLL_INSENSITIVE
, and
TYPE_SCROLL_SENSITIVE
.
8.3.11. 29006 HY000
29006 HY000 Invalid Result Set concurrency
Cause: An attempt was made to set an invalid result-set concurrency value.
Effect: The TrafT4Statement
call with resultSetConcurrency
fails.
Recovery: Valid resultSetConcurrency values are: CONCUR_READ_ONLY and CONCUR_UPDATABLE.
8.3.12. 29007 07009
29007 07009 Invalid descriptor index
Cause: A ResultSetMetadata
column parameter or a ParameterMetaData
param
parameter is outside of the descriptor range.
Effect: The ResultSetMetadata
or ParameterMetaData
method data is not returned as expected.
Recovery: Validate the column or parameter that is supplied to the method.
8.3.13. 29008 24000
29008 24000 Invalid cursor state
Cause: The ResultSet
method was called when the connection was closed.
Effect: The method call does not succeed.
Recovery: Make sure the connection is open before making the ResultSet
method call.
8.3.14. 29009 HY109
29009 HY109 Invalid cursor position
Cause: An attempt was made to perform a deleteRow()
method or updateRow()
method or cancelRowUpdates
method when the ResultSet
row cursor was on
the insert row. Or, an attempt was made to perform the insertRow()
method
when the ResultSet
row cursor was not on the insert row.
Effect: The row changes and cursor manipulation do not succeed.
Recovery: To insert a row, move the cursor to the insert row. To delete, cancel, or update a row, move the cursor from the insert row.
8.3.15. 29010 07009
29010 07009 Invalid column name
Cause: A column search does not contain columnName
string.
Effect: The column comparison or searches do not succeed.
Recovery: Supply a valid columnName string to the findColumn()
,
validateGetInvocation()
, and validateUpdInvocation()
methods.
8.3.16. 29011 07009
29011 07009 Invalid column index or descriptor index
Cause: A ResultSet
method was issued that has a column parameter that is
outside of the valid range.
Effect: The ResultSet
method data is not returned as expected.
Recovery: Make sure to validate the column that is supplied to the method.
8.3.17. 29012 07006
29012 07006 Restricted data type attribute violation.
Cause: An attempt was made to execute a method either while an invalid data type was set or the data type did not match the SQL column type.
Effect: The interface method is not executed.
Recovery: Make sure the correct method and Java data type is used for the column type.
8.3.18. 29013 HY024
29013 HY024 Fetch size is less than 0.
Cause: The size set for ResultSet.setFetchSize rows to fetch is less than zero.
Effect: The number of rows that need to be fetched from the database when more rows are needed for a ResultSet object is not set.
Recovery: Set the setFetchSize()
method rows parameter to a value greater
than zero.
8.3.19. 29015 HY024
29015 HY024 Invalid fetch direction
Cause: The setFetchDirection()
method direction parameter is set to an invalid value.
Effect: The direction in which the rows in this ResultSet
object are processed is not set.
Recovery: Valid fetch directions are: ResultSet.FETCH_FORWARD
,
ResultSet.FETCH_REVERSE
, and ResultSet.FETCH_UNKNOWN
.
8.3.20. 29017 HY004
29017 HY004 SQL data type not supported
Cause: An unsupported getBytes()
or setBytes()
JDBC method call was
issued using a BINARY
, VARBINARY
, or LONGVARBINARY
data type.
Effect: BINARY
, VARBINARY
, and LONGVARBINARY
data types are not supported.
Recovery: Informational message only; no corrective action is needed.
8.3.21. 29018 22018
29018 2018 Invalid character value in cast specification
Cause: An attempt was made to convert a string to a numeric type but the string does not have the appropriate format.
Effect: Strings that are obtained through a getter method cannot be cast to the method type.
Recovery: Validate the string in the database to make sure it is a compatible type.
8.3.22. 29019 07002
29019 07002 Parameter {0, number, integer} for {1, number, integer} set
of parameters is not set.
Cause: An input descriptor contains a parameter that does not have a value set.
Effect: The method checkIfAllParamsSet()
reports the parameter that is not set.
Recovery: Set a value for the listed parameter.
8.3.23. 29020 07009
29020 07009 Invalid parameter index.
Cause: A getter or setter method parameter count index is outside of the valid input-descriptor range, or the input-descriptor range is null.
Effect: The getter and setter method invocation validation fails.
Recovery: Change the getter or setter parameter index to a valid parameter value.
8.3.24. 29021 HY004
29021 HY004 Object type not supported
Cause: A PreparedStatement.setObject()
method call contains an unsupported Object Type.
Effect: The setObject()
method does not set a value for the designated parameter.
Recovery: Informational message only; no corrective action is needed.
Valid Object Types are: null
, BigDecimal
, Date
, Time
, Timestamp
, Double
,
Float
, Long
, Short
, Byte
, Boolean
, String
, and byte[]
, Blob
, and Clob
.
8.3.25. 29022 HY010
29022 HY010 Function sequence error.
Cause: The PreparedStatement.execute()
method does not support the use of
the PreparedStatement.addBatch()
method.
Effect: An exception is reported; the operation is not completed.
Recovery: Use the PreparedStatement.executeBatch()
method.
8.3.26. 29026 HY000
29026 HY000 Transaction can't be committed or rolled back when AutoCommitmode is on.
Cause: An attempt was made to commit a transaction while AutoCommit mode is enabled.
Effect: The transaction is not committed.
Recovery: Disable AutoCommit. Use the method only when the AutoCommit mode is disabled.
8.3.27. 29027 HY011
29027 HY011 SetAutoCommit not possible, since a transaction is active.
Cause: An attempt was made to call the setAutoCommit()
mode while a transaction was active.
Effect: The current AutoCommit mode is not modified.
Recovery: Complete the transaction, then attempt to set the AutoCommit mode.
8.3.28. 29029 HY011
29029 HY011 SetTransactionIsolation not possible, since a transaction is active.
Cause: An attempt was made to set transaction isolation level while a transaction was active.
Effect: Attempts to change the transaction isolation level for this Connection object fail.
Recovery: Complete the transaction, then attempt to set the transaction isolation level.
8.3.29. 29031 HY000
29031 HY000 SQL SELECT statement in batch is illegal
Cause: A SELECT SQL
statement was used in the executeBatch()
method.
Effect: An exception is reported; the SELECT SQL
query cannot be used in batch queries.
Recovery: Use the executeQuery()
method to issue the SELECT SQL
statement.
8.3.30. 29032 23000
29032 23000 Row has been modified since it is last read.
Cause: An attempt was made to update or delete a ResultSet
object row while the cursor was on the insert row.
Effect: The ResultSet
row modification does not succeed.
Recovery: Move the ResultSet
object cursor away from the row before updating or deleting the row.
8.3.31. 29033 23000
29033 23000 Primary key column value can't be updated.
Cause: An attempt was made to update the primary-key column in a table.
Effect: The column is not updated.
Recovery: Columns in the primary-key definition cannot be updated and cannot contain null values, even if you omit the NOT NULL clause in the column definition.
8.3.32. 29035 HY000
29035 HY000IO Exception occurred {0}
message_text
Cause: An ASCII or Binary or Character stream setter or an updater method
resulted in a java.io.IOException
.
Effect: The designated setter or updater method does not modify the ASCII or Binary or Character stream.
Recovery: Informational message only; no corrective action is needed.
8.3.33. 29036 HY000
29036 HY000 Unsupported encoding {0}
Cause: The character encoding is not supported.
Effect: An exception is thrown when the requested character encoding is not supported.
Recovery: ASCII (ISO88591)
, KANJI
, KSC5601
, and UCS2
are the only
supported character encodings.
8.3.34. 29037 HY106
29037 HY106 ResultSet type is TYPE_FORWARD_ONLY.
Cause: An attempt was made to point a ResultSet
cursor to a previous row
when the object type is set as TYPE_FORWARD_ONLY
.
Effect: The ResultSet object cursor manipulation does not occur.
Recovery: TYPE_FORWARD_ONLYResultSet
object type cursors can move forward
only. TYPE_SCROLL_SENSITIVE
and TYPE_SCROLL_INSENSITIVE
types are
scrollable.
8.3.35. 29038 HY107
29038 HY107 Row number is not valid.
Cause: A ResultSet
absolute()
method was called when the row number was set to 0.
Effect: The cursor is not moved to the specified row number.
Recovery: Supply a positive row number (specifying the row number counting from the beginning of the result set), or supply a negative row number (specifying the row number counting from the end of the result set).
8.3.36. 29039 HY092
29039 HY092 Concurrency mode of the ResultSet is CONCUR_READ_ONLY.
Cause: An action was attempted on a ResultSet
object that cannot be
updated because the concurrency is set to CONCUR_READ_ONLY
.
Effect: The ResultSet
object is not modified.
Recovery: For updates, you must set the ResultSet
object concurrency to CONCUR_UPDATABLE
.
8.3.37. 29040 HY000
29040 HY000 Operation invalid. Current row is the insert row.
Cause: An attempt was made to retrieve update, delete, or insert information on the current insert row.
Effect: The ResultSet
row information retrieval does not succeed.
Recovery: To retrieve row information, move the ResultSet
object cursor away from the insert row.
8.3.38. 29041 HY000
29041 HY000 Operation invalid. No primary key for the table.
Cause: The getKeyColumns()
method failed on a table that was created without a primary-key column defined.
Effect: No primary-key data is returned for the table.
Recovery: Change the table to include a primary-key column.
8.3.39. 29042 HY000
29042 HY000 Fetch size value is not valid.
Cause: An attempt was made to set the fetch-row size to a value that is less than 0.
Effect: The number of rows that are fetched from the database when more rows are needed is not set.
Recovery: For the setFetchSize()
method, supply a valid row value that is greater than or equal to 0.
8.3.40. 29043 HY000
29043 HY000 Max rows value is not valid.
Cause: An attempt was made to set a limit of less than 0 for the maximum
number of rows that any ResultSet
object can contain.
Effect: The limit for the maximum number of rows is not set.
Recovery: For the setMaxRows()
method, use a valid value that is greater than or equal to 0.
8.3.41. 29044 HY000
29044 HY000 Query timeout value is not valid.
Cause: An attempt was made to set a value of less than 0 for the number of seconds the driver waits for a Statement object to execute.
Effect: The query timeout limit is not set.
Recovery: For the setQueryTimeout()
method, supply a valid value that is
greater than or equal to 0.
8.3.42. 29045 01S07
29045 01S07 Fractional truncation.
Cause: The data retrieved by the ResultSet
getter method has been truncated.
Effect: The data retrieved is truncated.
Recovery: Make sure that the data to be retrieved is within a valid data-type range.
8.3.43. 29046 22003
29046 22003 Numeric value out of range.
Cause: A value retrieved from the ResultSet getter method is outside the range for the data type.
Effect: The ResultSet getter method does not retrieve the data.
Recovery: Make sure the data to be retrieved is within a valid data-type range.
8.3.44. 29047 HY000
29047 HY000 Batch update failed. See next exception for details.
Cause: One of the commands in a batch update failed to execute properly.
Effect: Not all the batch-update commands succeed. See the subsequent exception for more information.
Recovery: View the subsequent exception for possible recovery actions.
8.3.45. 29048 HY009
29048 HY009 Invalid use of null.
Cause: A parameter that has an expected table name is set to null.
Effect: The DatabaseMetadata
method does not report any results.
Recovery: For the DatabaseMetaData
method, supply a valid table name that is not null.
8.3.46. 29049 25000
29049 25000 Invalid transaction state.
Cause: The begintransaction()
method was called when a transaction was in progress.
Effect: A new transaction is not started.
Recovery: Before calling the begintransaction()
method, validate whether
other transactions are currently started.
8.3.47. 29050 HY107
29050 HY107 Row value out of range.
Cause: A call to getCurrentRow
retrieved is outside the first and last row range.
Effect: The current row is not retrieved.
Recovery: It is an informational message only; no recovery is needed. Contact user@trafodion.apache.org and report the entire message.
8.3.48. 29051 01S02
29051 01S02 ResultSet type changed to TYPE_SCROLL_INSENSITIVE.
Cause: The Result Set Type was changed.
Effect: None.
Recovery: This message is reported as an SQL Warning. It is an informational message only; no recovery is needed.
8.3.49. 29053 HY000
29053 HY000 SQL SELECT statement is invalid in executeUpdate() methodCause.
Cause: A select SQL statement was used in the executeUpdate()
method.
Effect: The SQL query not performed exception is reported.
Recovery: Use the executeQuery()
method to issue the select SQL statement.
8.3.50. 29054 HY000
29054 HY000 Only SQL SELECT statements are valid in executeQuery() method.
Cause: A non-select SQL statement was used in the executeQuery()
method.
Effect: The exception reported is "SQL query not performed".
Recovery: Use the executeUpdate()
method to issue the non-select SQL statement.
8.3.51. 29056 HY000
29056 HY000 Statement is already closed.
Cause: A validateSetInvocation()
or validateExecuteInvocation
method was used on a closed statement.
Effect: The validation on the statement fails and returns an exception.
Recovery: Use the validateSetInvocation()
or validateExecuteInvocation
method prior to the statement close.
8.3.52. 29057 HY000
29057 HY000 Auto generated keys not supported.
Cause: An attempt was made to use the Auto-generated keys feature.
Effect: The attempt does not succeed.
Recovery: The Auto-generated keys feature is not supported.
8.3.53. 29058 HY000
29058 HY000 Connection is not associated with a PooledConnection object.
Cause: The getPooledConnection()
method was invoked before the PooledConnection
object was established.
Effect: A connection from the pool cannot be retrieved.
Recovery: Make sure a PooledConnection
object is established before using
the getPooledConnection()
method.
8.3.54. 29059 HY000
29059 HY000 'blobTableName' property is not set or set to null value or set to invalid value.
Cause: Attempted to access a BLOB column without setting the property
t4jdbc.blobTableName
, or the property is set to an invalid value.
Effect: The application cannot access BLOB columns.
Recovery: Set the t4jdbc.blobTableName
property to a valid LOB table
name. The LOB table name is of format catalog.schema.lobTableName
.
8.3.55. 29060 HY000
29060 HY000 't4jdbc.clobTableName' property is not set or set to null value or set to invalid value.
Cause: Attempted to access a CLOB column without setting the
property t4jdbc.clobTableName
, or the property is set to null
value or set to an invalid value.
Effect: The application cannot access CLOB columns.
Recovery: Set the t4jdbc.clobTableName
property to a valid LOB table
name. The LOB table name is of format catalog.schema.lobTableName
.
8.3.56. 29061 HY00
29061 HY00 Lob object {0} is not current.
Cause: Attempted to access LOB column data after the cursor moved or the result set from which the LOB data was obtained had been closed.
Effect: The application cannot access LOB data.
Recovery: Read the LOB data before moving the cursor or closing the result-set object.
8.3.57. 29063 HY00
29063 HY00 Transaction error {0} - {1} while obtaining start data locator.
Cause: A transaction error occurred when the Type 4 driver attempted to reserve the data locators for the given process while inserting or updating a LOB column.
Effect: The application cannot insert or update the LOB columns.
Recovery: Check the file-system error in the message and take recovery action accordingly.
8.3.58. 29067 07009
2067 07009 Invalid input value in the method {0}.
Cause: One or more input values in the given method is invalid.
Effect: The given input method failed.
Recovery: Check the input values for the given method.
8.3.59. 29068 07009
29068 07009 The value for position can be any value between 1 and one more than the length of the LOB data.
Cause: The position input value in Blob.setBinaryStream
,
Clob.setCharacterStream
, or Clob.setAsciiStream
can be between 1 and one
more than the length of the LOB data.
Effect: The application cannot write the LOB data at the specified position.
Recovery: Correct the position input value.
8.3.60. 29069 HY000
29069 HY000 Autocommit is on and LOB objects are involved.
Cause: An attempt was made to access a LOB column when autocommit made is enabled.
Effect: The application cannot access LOB columns.
Recovery: Disable the autocommit mode.
8.3.61. 29100 HY000
29100 HY000 An internal error occurred.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.62. 29101 HY000
29101 HY000 Contact your service provider.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org (the service provider) and report the entire message.
8.3.63. 29102 HY000
29101 HY000 Error while parsing address <address>.
Cause: The address format was not recognized.
Effect: Operation fails.
Recovery: Refer to url Property for the valid address format.
8.3.64. 29103 HY000
29103 HY000 Address is null.
Cause: The address was empty.
Effect: Operation fails.
Recovery: Refer to url Property for the valid address format.
8.3.65. 29104 HY000
29104 HY000 Expected suffix: <suffix>.
Cause: The address suffix was incorrect or missing.
Effect: Operation fails.
Recovery: Refer to url Property for the valid address format.
8.3.66. 29105 HY000
29105 HY000 Unknown prefix for address.
Cause: The address prefix was incorrect or missing.
Effect: Operation fails.
Recovery: Refer to url Property for the valid address format.
8.3.67. 29106 HY000
29016 HY000 Expected address format: jdbc:subprotocol::subname.
Cause: Not applicable.
Effect: Not applicable.
Recovery: This is an informational message. Refer to url Property for the valid address format.
8.3.68. 29107 HY000
29107 HY000 Address not long enough to be a valid address.
Cause: The address length was too short to be a valid address.
Effect: Operation fails.
Recovery: Refer to url Property for the valid address format.
8.3.69. 29108 HY000
29108 HY000 Expecting \\<machine-name><process-name>/<port-number>.
Cause: The DCS address format was invalid.
Effect: Operation fails.
Recovery: The address returned by the Trafodion platform was not in the expected format. Contact user@trafodion.apache.org and report the entire message.
8.3.70. 29109 HY000
29109 HY000 //<{IP Address|Machine Name}[:port]/database name>
Cause: Informational message.
Effect: Not applicable.
Recovery: Not applicable.
8.3.71. 29110 HY000
29110 HY000 Address is missing an IP address or machine name.
Cause: An IP address or machine name is required, but missing.
Effect: The operation fails.
Recovery: Include a valid IP address or machine name. Refer to url Property for the valid address format.
8.3.72. 29111 HY000
29111 HY000 Unable to evaluate address <address> Cause: <cause>.
Cause: The driver could not determine the IP address for a host.
Effect: The operation fails.
Recovery: The address or machine name may not be properly qualified or
there my exist a security restriction. See the documentation for the
getAllByName
method in the java.net.InetAddress
class. Include a valid
IP address or machine name. Refer to url Property for the
valid address format.
8.3.73. 29112 HY000
29112 HY000 Missing ']'.
Cause: The driver could not determine the IP address for a host.
Effect: The operation fails.
Recovery: The address or machine name may not be properly formatted. Refer to url Property for the valid address format.
8.3.74. 29113 HY000
29113 HY000 Error while opening socket. Cause: <cause>.
Cause: Socket error.
Effect: The operation fails.
Recovery: Use the getCause
method on the Exception
to determine the
appropriate recovery action.
8.3.75. 29114 HY000
29114 HY000 Error while writing to socket.
Cause: Socket write error.
Effect: The operation fails.
Recovery: Use the getCause
method on the Exception
to determine the
appropriate recovery action.
8.3.76. 29115 HY000
29115 HY000 Error while reading from socket. Cause: <cause>.
Cause: Socket read error.
Effect: The operation fails.
Recovery: Use the getCause
method on the Exception
to determine the
appropriate recovery action.
8.3.77. 29116 HY000
29116 HY000 Socket is closed.
Cause: Socket close error.
Effect: The operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.78. 29117 HY000
29117 HY000 Error while closing session. Cause: <cause>.
Cause: An error was encountered while closing a session.
Effect: The operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.79. 29118 HY000
29118 HY000 A write to a bad map pointer occurred.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.80. 29119 HY000
29119 HY000 A write to a bad par pointer occurred.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.81. 29120 HY000
29120 HY000 An association server connect message error occurred.
Cause: Unable to connect to the DCS association server.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.82. 29121 HY000
29121 HY000 A close message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.83. 29122 HY000
29122 HY000 An end transaction message error occurred.
Cause: Unable to perform the operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.84. 29123 HY000
29123 HY000 An execute call message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.85. 29124 HY000
29124 HY000 An execute direct message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.86. 29125 HY000
29125 HY000 An execute direct rowset message error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.87. 29126 HY000
29126 HY000 An execute N message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.88. 29127 HY000
29127 HY000 An execute rowset message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.89. 29128 HY000
29128 HY000 A fetch perf message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.90. 29129 HY000
29129 HY000 A fetch rowset message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.91. 29130 HY000
29130 HY000 A get sql catalogs message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.92. 29131 HY000
29131 HY000 An initialize dialogue message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.93. 29132 HY000
29132 HY000 A prepare message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.94. 29133 HY000
29133 HY000 A prepare rowset message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.95. 29134 HY000
29134 HY000 A set connection option message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.96. 29135 HY000
29135 HY000 A terminate dialogue message error occurred. Cause: <cause>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.97. 29136 HY000
29136 HY000 An association server connect reply occurred.
Exception: <exception> Exception detail: <exception_detail>
Error text/code: <error text or code>.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate any error or error detail information accompanying this message and contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze accompanying errors and warnings.
8.3.98. 29137 HY000
29137 HY000 A close reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.99. 29138 HY000
29138 HY000 An end transaction reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.100. 29139 HY000
29139 HY000 An execute call reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.101. 29140 HY000
29140 HY000 An execute direct reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.102. 29141 HY000
29141 HY000 An execute direct rowset reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.103. 29142 HY000
29142 HY000 An execute N reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.104. 29143 HY000
29143 HY000 An execute rowset reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.105. 29144 HY000
29144 HY000 A fetch perf reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.106. 29145 HY000
29145 HY000 A fetch rowset reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.107. 29146 HY000
29146 HY000 A get sql catalogs reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.108. 29147 HY000
29147 HY000 An initialize dialogue reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.109. 29148 HY000
29148 HY000 A prepare reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.110. 29149 HY000
29149 HY000 A prepare rowset reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.111. 29150 HY000
29150 HY000 A set connection option reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.112. 29151 HY000
29151 HY000 A terminate dialogue reply error occurred.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Evaluate the returned value from the getCause
method on the
Exception
to determine the appropriate recovery action.
8.3.113. 29152 HY000
29152 HY000 No more ports available to start ODBC servers.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server (Trafodion
platform) errors. Evaluate the returned value from the getCause
method
on the Exception
to determine the appropriate recovery action.
8.3.114. 29153 HY000
29153 HY000 Invalid authorization specification.
Cause: Incorrect user name and/or password.
Effect: Operation fails.
Recovery: Retry with correct user name and/or password.
8.3.115. 29154 HY000
29154 HY000 Timeout expired.
Cause: Unable to perform this operation.
Effect: Operation fails.
Recovery: Retry and/or change the timeout value for the operation.
8.3.116. 29155 HY000
29155 HY000 Unknown message type.
Cause: Internal error.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze errors and warnings.
8.3.117. 29156 HY000
29156 HY000 An error was returned from the server. Error: <error>
Error detail: <error_detail>.
Cause: The server reported an error.
Effect: Operation fails.
Recovery: Evaluate any error or error detail information accompanying the message. Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze accompanying errors and warnings.
8.3.118. 29157 HY000
29157 HY000 There was a problem reading from the server.
Cause: The server reported an error.
Effect: Operation fails.
Recovery: Evaluate any error or error detail information accompanying the message. Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze accompanying errors and warnings.
8.3.119. 29158 HY000
29158 HY000 The message header contained the wrong version.
Expected: <expected_version> Actual: <actual_version>.
Cause: The server’s version differs from the expected version.
Effect: Operation fails.
Recovery: Evaluate any error or error detail information accompanying the message. Install compatible versions of the driver and Trafodion connectivity server.
8.3.120. 29159 HY000
29159 HY000 The message header contained the wrong signature.
Expected: <expected_signature> Actual: <actual_signature>.
Cause: The server’s signature differs from the expected version.
Effect: Operation fails.
Recovery: Evaluate any error or error detail information accompanying the message. Install compatible versions of the driver and Trafodion connectivity server.
8.3.121. 29160 HY000
29160 HY000 The message header was not long enough.
Cause: The message returned by the server was too short to be a valid message.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.122. 29161 S1000
29161 S1000 Unable to authenticate the user because of an NT error: {0}
Cause: A message returned by the server.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.123. 29162 S1000
29162 S1000 Unexpected programming exception has been found: <exception>.
Check the server event log on node node for details.
Cause: A message returned by the server.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze accompanying errors and warnings.
8.3.124. 29163 08001
29163 08001 ODBC Services not yet available: <server>.
Cause: A message returned by the server.
Effect: Operation fails.
Recovery: Retry and/or wait for a server to become available. Configure server-side data source with more servers.
8.3.125. 29164 08001
29164 08001 DataSource not yet available or not found: <error>.
Cause: A message returned by the server.
Effect: Operation fails.
Recovery: Create server data source and/or configure server data source with more servers.
8.3.126. 29165 HY000
29165 HY000 Unknown connect reply error: <error>.
Cause: A message returned by the server.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze accompanying errors and warnings.
8.3.127. 29166 HY000
29166 HY000 This method is not implemented.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.128. 29167 HY000
29167 HY000 Internal error. An internal index failed consistency check.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.129. 29168 HY000
29168 HY000 Unknown reply message error: <error> error detail: <error_detail>.
Cause: Server returned an error.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors and to analyze accompanying errors and warnings.
8.3.130. 29169 HY000
29169 HY000 Invalid connection property setting
Cause: The message returned by the server was too short to be a valid message.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.131. 29170 HY000
29170 HY000 Invalid parameter value.
Cause: Internal error.
Effect: Operation fails.
Recovery: None. Contact user@trafodion.apache.org and report the entire message.
8.3.132. 29172 HY000
29172 HY000 Translation of parameter to {0} failed.
Cause: Translation errors occurred when translating the parameter into the target character set reported in the {0} replacement variable.
Effect: The method fails.
Recovery: Set the parameter to use characters within the appropriate
character set. You can also turn off translation validation by setting
the translationVerification
property to FALSE.
8.3.133. 29173 HY000
29173 HY000 Translation of SQL statement {0} failed.
Cause: Translation errors occurred when translating the SQL statement into the target character set reported in the {0} replacement variable.
Effect: The method fails.
Recovery: Edit the SQL statement to use characters within the appropriate
character set. You can also turn off translation validation by setting
the translationVerification
property to FALSE.
8.3.134. 29174 HY000
29174 HY000 Autocommit is on and updateRow was called on the ResultSetobject.
Cause: The ResultSet.updateRow()
method is called when autocommit is set on.
Effect: Warning is thrown. Subsequent ResultSet.next()
calls will fail
because all the ResultSet(cursors)
are closed.
Recovery: Call the ResultSet.updateRow()
method with autocommit set to off.
8.3.135. 29175 HY000
29175 HY000 Unknown Error {0}.
Cause: An unknown error occurred during connection {0}.
Effect: The connection fails.
Recovery: Retry the connection.
8.3.136. 29177 HY000
29177 HY000 Data cannot be null.
Cause: Attempted to get column value data in String format, but passed a null input value.
Effect: The operation fails.
Recovery: Contact user@trafodion.apache.org to check logs for server (Trafodion platform) errors regarding the DCS server.
8.3.137. 29178 HY000
29178 HY000 No column value has been inserted.
Cause: The value for a required column was not specified.
Effect: Operation fails.
Recovery: Ensure that all required column values are specified, and retry the operation.
8.3.138. 29182 HY000
29182 HY000 General warning. Connected to the default data source:
TDM_Default_DataSource
Cause: The user application specified a data source that does not exist on the server side, the Trafodion platform.
Effect: The connection uses the Trafodion platform default data
source TDM_Default_DataSource
.
Recovery: Ignore the warning or contact your Trafodion database administrator to add the server-side data source that the application specified.
8.3.139. S1000 HY000
S1000 HY000 A TIP transaction error <error> has been detected. Check the
server event log on Node <segment> for Transaction Error details.
Cause: A message was returned by the server.
Effect: Operation fails.
Recovery: Contact user@trafodion.apache.org to check for errors in the server event log on the reported segment.
9. Avoiding Driver-Server Version Mismatch
The Trafodion JDBC type 4 driver described in this document can connect only with an version-equivalent platform (server). It cannot connect with an earlier version platform.
To make a connection with the Trafodion platform, JDBC clients, through the driver, connect with the Trafodion database connectivity service (DCS) on the Trafodion platform. In some situations, Trafodion JDBC clients need to make connections to older-version platforms (servers) from the same client boxes. To make a connection, the driver version must be compatible with the Trafodion platform version.
The DCS release version and Trafodion platform release version are always the same. |
9.1. Compatible Versions
Ensure that you install the driver version that is compatible with the Trafodion platform version.
Driver version | Compatible versions of the Trafodion platform |
---|---|
Trafodion Release 2.0 driver |
All versions up to, but not including, Trafodion Release 2.2 |
Trafodion Release 2.1 driver |
All versions up to, but not including, Trafodion Release 2.2 |
Trafodion Release 2.2 driver |
Trafodion Release 2.2 and later versions |
If a compatible version is not installed, you can obtain the software to download from the Trafodion download site.
9.2. Considerations for Mixed-Version JDBC Clients Connecting to Trafodion Platforms
On the client platform, you can install multiple versions of the Trafodion JDBC type 4 driver to connect to Trafodion platforms of different platform versions.
-
Assuming you have installed the Release 2.2 Trafodion JDBC type 4 driver on your workstation and set up the client environment, the 2.2 driver’s classes are set your java CLASSPATH.
-
To connect to a Release 2.1 or 2.0 server (Trafodion platform) from the same client machine, you must load the 2.1 driver by making sure that it is in your java CLASSPATH.
-
Connecting to both a 2.1 and 2.2 server from the same application at the same time is not possible.
-
A given application must use either the 2.2 driver or the 2.1 driver when launched. The only way to switch is to reload the application when pointing to a new CLASSPATH that contains a different driver.
9.3. Version Mismatch Error Message
If an Trafodion JDBC client attempts to connect to an invalid DCS version, the driver returns the error:
SQLCODE: 29162
SQLSTATE S1000
Error text:
Unexpected programming exception has been found: <errortext>. Check
the server event log on node <logfile_location> for details.
-
<errortext> is the error text from the server.
-
<logfile_location> is the location of the log file.