http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c2116c2b/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_data.adoc ---------------------------------------------------------------------- diff --git a/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_data.adoc b/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_data.adoc new file mode 100644 index 0000000..332f351 --- /dev/null +++ b/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_data.adoc @@ -0,0 +1,553 @@ +//// +/** + *@@@ START COPYRIGHT @@@ + * 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. + * @@@ END COPYRIGHT @@@ + */ +//// + +[[working-with-blob-and-clob-data]] += Working with BLOB and CLOB Data + +This chapter describes working with BLOB and CLOB data in JDBC +applications. You can use the standard interface described in the JDBC +3.0 API specification to access BLOB and CLOB data in a {project-name} +database with support provided by the Type 4 driver. + +BLOB and CLOB are not native data types in a {project-name} database. +But, database administrators can create and manage {project-name} +database tables that have BLOB and CLOB columns by using the Type 4 +driver or other tools as described in +<<managing-the-sql-tables-for-blob-and-clob-data, Managing the SQL Tables for BLOB and CLOB Data>>. + +For management purposes, CLOB and BLOB data is referred to as large +object (LOB) data, which can represent either data type. + +[[architecture-for-lob-support]] +== Architecture for LOB Support + +The tables that support LOB data are: + +*LOB Architecture: Tables for LOB Data Support* +[cols="15%,85%",options="header" ] +|=== +| Table | Description +| *Base table* | Referenced by JDBC applications to insert, store, read, and update BLOB and CLOB data. +In the base table, the Type 4 driver maps the BLOB and CLOB columns into a data-locator column. The data-locator column points to +the actual LOB data that is stored in a separate user table called the LOB table. +| *LOB table* | Actually contains the BLOB and CLOB data in chunks. A CLOB or BLOB object is identified by a data locator. LOB tables have two +formats: LOB table for BLOB data and a LOB table for CLOB data. +|=== + +image:{images}/lob_tables.jpg[LOB table layout] + +[[setting-properties-for-the-lob-table]] +== Setting Properties for the LOB Table + +Before running the JDBC application that uses BLOB and CLOB data through +the JDBC API, the database administrator must create the LOB tables. For +information on creating LOB tables, see +<<managing-lob-data-by-using-the-lob-admin-utility, Managing LOB Data by Using the Lob Admin Utility>>. + +The JDBC applications that access BLOB or CLOB data must specify the +associated LOB table names and, optionally, configure the +`reserveDataLocators` property. + +[[specifying-the-lob-table]] +=== Specifying the LOB Table + +At run time, a user JDBC application notifies the Type 4 driver of the +name or names of the LOB tables associated with the CLOB or BLOB columns +of the base tables being accessed by the application. One LOB table or +separate tables can be used for BLOB and CLOB data. + +The JDBC application specifies a LOB table name either through a system +parameter or through a Java Property object by using one of the +following properties, depending on the LOB column type: + +For more information about using these properties, see +<<lob-table-name-properties, LOB Table Name Properties>>. + +[[reserving-data-locators]] +=== Reserving Data Locators + +A data locator is the reference pointer value (SQL `LARGEINT` data type) +that is substituted for the BLOB or CLOB column in the base table +definition. Each object stored into the LOB table is assigned a unique +data locator value. Because the LOB table is a shared resource among all +accessors that use the particular LOB table, reserving data locators +reduces contention for getting the next value. The default setting is +100 reserved data locators; therefore, each JVM instance can insert 100 +large objects (not chunks) before needing a new allocation. + +Specify the number of data locators (n) to reserve for your application +by using the Type 4 driver property `hpt4jdbc.reserveDataLocators`. For +information about specifying this property, see +<<reserveDataLocators, reserveDataLocators Property>>. + + +[[storing-clob-data]] +== Storing CLOB Data + +[[inserting-clob-columns-by-using-the-clob-interface]] +=== Inserting CLOB Columns by Using the Clob Interface + +When you insert a row containing a CLOB data type, and before the column +can be updated with real CLOB data, you can insert a row that has an +empty CLOB value. To insert an empty CLOB value in a {project-name} +database, specify the `EMPTY_CLOB()` function for the CLOB column in the +insert statement. + +* The `EMPTY_CLOB()` function is an {project-name} database software-specific +function and might not work on other databases. + +* Do not use the `EMPTY_CLOB()` function when using the `PreparedStatement` interface. + +The Type 4 driver scans the SQL string for the `EMPTY_CLOB()` function and +substitutes the next-available data locator. + +Then, obtain the handle to the empty CLOB column by selecting the CLOB +column for update. The following code illustrates how to obtain the +handle to an empty CLOB column: + +[source, java] +---- +Clob myClob = null ; + +Statement s = conn.createStatement() ; +ResultSet rs = + s.executeQuery( "SELECT myclobcolumn FROM mytable WHERE ... FOR UPDATE" ) ; +if ( rs.next() ) + myCLOB = rs.getClob( 1 ) ; +---- + +You can now write data to the CLOB column. See +<<writing-ascii-or-mbcs-data-to-a-clob-column, Writing ASCII or MBCS Data to a CLOB Column>>. + +NOTE: *Limitation*: Do not rename the CLOB column in the select query. + +[[writing-ascii-or-mbcs-data-to-a-clob-column]] +=== Writing ASCII or MBCS Data to a CLOB Column + +You can write ASCII or MBCS data to a CLOB column. + +NOTE: Multi-byte Character Set (MBCS) data and ASCII data are handled the same way. + +[[ascii-data]] +==== ASCII Data + +To write ASCII or MBCS data to the CLOB column, use the Clob interface. +The following code illustrates using the `setAsciiStream` method of the +Clob interface to write CLOB data. + +[source, java] +---- +// stream begins at position: 1 +long pos = 1; + +// String containing the ASCII data +String s ; + +// Obtain the output stream to write Clob data +OutputStream os = myClob.setAsciiStream( pos ) ; + +// write Clob data using OutputStream +byte[] myClobData = s.getBytes() ; +os.write( myClobData ) ; +---- + +The Type 4 driver splits the output stream into chunks and stores the +chunks in the LOB table. + + +[[inserting-clob-data-by-using-the-preparedstatement-interface]] +=== Inserting CLOB Data by Using the PreparedStatement Interface + +You can use the `PreparedStatement` interface to insert a CLOB column +using ASCII or MBCS data. + +[[ascii-data]] +==== ASCII Data + +To insert a CLOB column using ASCII or MBCS data from an `InputStream`, +use the `PreparedStatement` interface to insert the CLOB column. + +[source, java] +---- +InputStream inputAsciiStream ; + +PreparedStatement ps = + conn.prepareStatement( "INSERT INTO mytable (myclobcolumn) VALUES (?)" ) ; + +ps.setAsciiStream( 1, inputAsciiStream, length_of_data ) ; +ps.executeUpdate() ; +---- + +The Type 4 driver reads the data from `InputStream` and writes the data to +the LOB table. The Type 4 driver substitutes the next-available data +locator for the parameter of the CLOB column in the table. + +[[inserting-a-clob-object-by-using-the-setclob-method]] +=== Inserting a Clob Object by Using the setClob Method + +Your JDBC application cannot directly instantiate a `Clob` object. To +perform an equivalent operation: + +1. Obtain a `Clob` object by using the `getClob` method of the `ResultSet` interface. +2. Insert the `Clob` object into another row by using the `setClob` method +of the `PreparedStatement` interface. + +In this situation, the Type 4 driver generates a new data locator and, +when the `PreparedStatement` is executed, copies the contents of the source `Clob` +into the new `Clob` object. + +[[reading-clob-data]] +== Reading CLOB Data + +[[reading-ascii-data-from-a-clob-column]] +=== Reading ASCII Data from a CLOB Column + +To read ASCII or MBCS data from a CLOB column, use the `Clob` interface or `InputStream`. + +Using the Clob interface: + +[source, java] +---- +// Obtain the Clob from ResultSet +Clob myClob = rs.getClob( "myClobColumn" ) ; + +// Obtain the input stream to read Clob data +InputStream is = myClob.getAsciiStream() ; + +// read Clob data using the InputStream +byte[] myClobData ; +myClobData = new byte[ length ] ; + +is.read( myClobData, offset, length ) ; +---- + +To read ASCII or MBCS data from the CLOB column by using `InputStream`: + +[source, java] +---- +// obtain the InputStream from ResultSet +InputStream is = rs.getAsciiStream( "myClobColumn" ) ; + +// read Clob data using the InputStream +byte[] myClobData ; +myClobData = new byte[length] ; + +is.read( myClobData, offset, length ) ; +---- + +[[updating-clob-data]] +== Updating CLOB Data + +To update CLOB data, use the methods in the `Clob` interface or use the +`updateClob` method of the `ResultSet` interface. The Type 4 driver makes +changes directly to the CLOB data. Therefore, the Type 4 driver returns +`false` to the `locatorsUpdateCopy` method of the `DatabaseMetaData` interface. +Applications do not need to issue a separate update statement to update the CLOB data. + +[[updating-clob-objects-with-the-updateclob-method]] +=== Updating Clob Objects with the updateClob Method + +Unlike some LOB support implementations, the Type 4 driver updates the +CLOB data directly in the database. So, when the `Clob` object is same in +the `updateClob` method as the `Clob` object obtained using `getClob`, the +`updateRow` method of the `ResultSet` interface does nothing with the `Clob` +object. + +When the `Clob` objects differ, then the `Clob` object in the `updateClob` method +behaves as if the `setClob` method was issued. See +<<inserting-a-clob-object-by-using-the-setclob-method, Inserting a Clob Object by Using the setClob Method>>. + +[[replacing-clob-objects]] +=== Replacing Clob Objects + +You can replace Clob objects in the following ways: + +* Use the `EMPTY_CLOB()` function to replace the `Clob` object with the +empty `Clob` object, then insert new data as described under +<<inserting-clob-columns-by-using-the-clob-interface, Inserting CLOB Columns by Using the Clob Interface>>. +* Use the `PreparedStatement.setAsciiStream()` or `setCharacterStream()` +method to replace the existing `Clob` object with new CLOB data. +* Use the `setClob` or `updateClob` method to replace the existing CLOB +objects as explained under +<<inserting-a-clob-object-by-using-the-setclob-method, Inserting a Clob Object by Using the setClob Method>> and +<<updating-clob-objects-with-the-updateclob-method, Updating Clob Objects with the updateClob Method>>. + +[[deleting-clob-data]] +== Deleting CLOB Data + +To delete CLOB data, the JDBC application uses the `SQL DELETE` statement +to delete the row in the base table. + +When the row containing the CLOB column is deleted by the JDBC +application, the corresponding CLOB data is automatically deleted, too. + +See also +<<null-and-empty-blob-or-empty-clob-value, NULL and Empty BLOB or Empty CLOB Value>>. + +[[storing-blob-data]] +== Storing BLOB Data + +Perform operations on BLOB columns that are similar to those operations +used on CLOB columns. + +* Use the `EMPTY_BLOB()` function in the insert statement to create an +empty BLOB column in the database. +* Use the `setBinaryStream` method of the `Blob` interface to obtain the +`InputStream` to read BLOB data. +* Use the `getBinaryStream` method of the `Blob` interface to obtain the +`OutputStream` to write BLOB data. +* Use the `setBinaryStream` of the `PreparedStatement` interface to write the +data to the BLOB column. + +[[inserting-a-blob-column-by-using-the-blob-interface]] +=== Inserting a BLOB Column by Using the Blob Interface + +When you insert a row containing a BLOB data type, you can insert the +row using an empty BLOB value before the column can be updated with real +BLOB data. To insert an empty BLOB value in a {project-name} database, +specify `EMPTY_BLOB()` function for the BLOB column in the insert +statement. + +The Type 4 driver scans the SQL string for the `EMPTY_BLOB()` function and +substitutes the next-available data locator. + +NOTE: The `EMPTY_BLOB()` function is an {project-name} database software +specific function and might not work on other databases. Do not use the `EMPTY_BLOB()` function when using the `PreparedStatement` +interface. + +Then, obtain the handle to the empty BLOB column by selecting the BLOB +column for update. The following code illustrates how to obtain the +handle to an empty BLOB column: + +[source, java] +---- +Blob myBlob = null ; + +Statement s = conn.createStatement() ; +ResultSet rs = + s.executeQuery("SELECT myblobcolumn FROM mytable WHERE ... FOR UPDATE" ) ; + +if ( rs.next() ) + myBlob = rs.getBlob( 1 ) ; +---- + +You can now write data to the BLOB column. See +<<writing-binary-data-to-a-blob-column, Writing Binary Data to a BLOB Column>>. + +NOTE: *Limitation:* Do not rename the BLOB column in the select query. + +[[writing-binary-data-to-a-blob-column]] +=== Writing Binary Data to a BLOB Column + +To write data to the BLOB column, use the `Blob` interface. The following +code illustrates using the `setBinaryStream` method of the `Blob` interface +to write BLOB data: + +[source, java] +---- +// Stream begins at position: 1 +long pos = 1 ; + +// String containing the binary data +String s ; + +// Obtain the output stream to write Blob data +OutputStream os = myBlob.setBinaryStream( pos ) ; + +// write Blob data using OutputStream +byte[] myBlobData = s.getBytes() ; +os.write( myBlobData ) ; +---- + +The Type 4 driver splits the output stream into chunks and stores the chunks in the LOB table. + +[[inserting-a-blob-column-by-using-the-preparedstatement-interface]] +=== Inserting a BLOB Column by Using the PreparedStatement Interface + +To insert a BLOB column that has binary data from an `InputStream`, use +the `PreparedStatement` interface: + +[source, java] +---- +InputStream inputBinary ; + +PreparedStatement ps = + conn.prepareStatement( "INSERT INTO mytable (myblobcolumn) VALUES (?)" ) ; + +ps.setBinaryStream( 1, inputBinary, length_of_data ) ; +ps.executeUpdate() ; +---- + +The Type 4 driver reads the data from `InputStream` and writes the data to +the LOB table. The Type 4 driver substitutes the next-available data +locator for the parameter of the BLOB column in the table. + +[[inserting-a-blob-object-by-using-the-setblob-method]] +=== Inserting a Blob Object by Using the setBlob Method + +Your JDBC application cannot directly instantiate a `Blob` object. To +perform an equivalent operation: + +1. Obtain a `Blob` object by using the `getBlob` method of the `ResultSet` interface. +2. Insert the `Blob` object into another row by using the `setBlob` method +of the `PreparedStatement` interface. + +In this situation, the Type 4 driver generates a new data locator and +copies the contents of the source `Blob` into the new `Blob` object when the +application issues the `setBlob` method of the `PreparedStatement` interface. + + +[[reading-binary-data-from-a-blob-column]] +== Reading Binary Data from a BLOB Column + +To read binary data from the BLOB column, use the `Blob` interface or `InputStream`. + +Using the Blob interface: + +[source, java] +---- +// Obtain the Blob from ResultSet +Blob myBlob = rs.getBlob( "myBlobColumn" ) ; + +// Obtain the input stream to read Blob data +InputStream is = myBlob.getBinaryStream() ; + +// read Blob data using the InputStream +byte[] myBlobData ; +myBlobData = new byte[ length ] ; + +is.read( myBlobData, offset, length ) ; +---- + +Using InputStream: + +[source, java] +---- +// obtain the InputStream from ResultSet +InputStream is = rs.getBinaryStream( "myBlobColumn" ) ; + +// read Blob data using the InputStream +byte[] myBlobData ; +myBlobData = new byte[ length ] ; + +is.read( myBlobData, offset, length ) ; +---- + +[[updating-blob-data]] +== Updating BLOB Data + +To update BLOB data, use the methods in the `Blob` interface or use the +`updateBlob` method of the `ResultSet` interface. The Type 4 driver makes +changes to the BLOB data directly. Therefore, the Type 4 driver returns +`false` to the `locatorsUpdateCopy` method of the +`DatabaseMetaData` interface. Applications do not need to issue a separate +update statement to update the BLOB data. + +[[updating-blob-objects-by-using-the-updateblob-method]] +=== Updating Blob Objects by Using the updateBlob Method + +Unlike some LOB support implementations, the Type 4 driver updates the +BLOB data directly in the database. So, when the Blob object is same in +the `updateBlob` method as the object obtained using `getBlob`, the +`updateRow` method of the `ResultSet` interface does nothing with the `Blob` +object. + +When the `Blob` objects differ, the `Blob` object in the `updateBlob` method +behaves as if the `setBlob` method was issued. See +<<inserting-a-blob-object-by-using-the-setblob-method, Inserting a Blob Object by Using the setBlob Method>>. + +[[replacing-blob-objects]] +=== Replacing Blob Objects + +You can replace Blob objects in the following ways: + +* Use the `EMPTY_BLOB()` function to replace the `Blob` object with the +empty `Blob` object. +* Replace an existing `Blob` object in a row by inserting the `Blob` with +new data as described under +<<inserting-a-blob-column-by-using-the-blob-interface, Inserting a BLOB Column by Using the Blob Interface>>. +* Use the `setBinaryStream()` method to of the `PreparedStatement` interface +to replace the existing `Blob` object with new BLOB data. +* Use the `setBlob` or `updateBlob` methods to replace the existing BLOB +objects as explained under +<<inserting-a-blob-object-by-using-the-setblob-method, Inserting a Blob Object by Using the setBlob Method>> and +<<updating-blob-objects-by-using-the-updateblob-method, Updating Blob Objects by Using the updateBlob Method>>. + +[[deleting-blob-data]] +== Deleting BLOB Data + +To delete BLOB data, the JDBC application uses the `SQL DELETE` statement +to delete the row in the base table. + +When the row containing the BLOB column is deleted by the application, +the corresponding BLOB data is automatically deleted. + +See also +<<null-and-empty-blob-or-empty-clob-value, NULL and Empty BLOB or Empty CLOB Value>>. + +[[null-and-empty-blob-or-empty-clob-value]] +== NULL and Empty BLOB or Empty CLOB Value + +The data locator can have a `NULL` value if the BLOB or CLOB column is +omitted in the insert statement. The Type 4 driver returns `NULL` when the +application retrieves the value for such a column. + +When the application uses the `EMPTY_BLOB()` function or the `EMPTY_CLOB()` +function to insert empty BLOB or CLOB data into the BLOB or CLOB column, +the Type 4 driver returns the `Blob` or `Clob` object with no data. + +[[transactions-involving-blob-and-clob-access]] +== Transactions Involving Blob and Clob Access + +You must ensure that your JDBC applications control the transactions +when the BLOB columns or CLOB columns are accessed or modified. To +control the transaction, set the connection to autocommit OFF mode. + +All LOB data access or modification is done under the application's +transaction. When the autocommit mode is ON and LOB data is accessed or +modified, the Type 4 driver throws the SQLException, Autocommit is on +and LOB objects are involved. + +[[access-considerations-for-clob-and-blob-objects]] +== Access Considerations for Clob and Blob Objects + +The Type 4 driver allows all the valid operations on the current `Clob` +object or `Blob` object, called a "LOB object." LOB objects are current as +long as the row that contains these LOB objects is the current row. The +Type 4 driver throws an SQLException, issuing the following message, +when the application attempts to perform operations on a LOB object that +is not current: + +``` +Lob object {object-id} is not current +``` + +Only one `InputStream` or `Reader` and one `OutputStream` or `Writer` can be +associated with the current LOB object. + +* When the application obtains the `InputStream` or `Reader` from the LOB +object, the Type 4 driver closes the `InputStream` or `Reader` that is +already associated with the LOB object. +* Similarly, when the application obtains the `OutputStream` or `Writer` +from the LOB object, the Type 4 driver closes the `OutputStream` or `Writer` +that is already associated with the LOB object. +
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c2116c2b/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_management.adoc ---------------------------------------------------------------------- diff --git a/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_management.adoc b/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_management.adoc new file mode 100644 index 0000000..7fd5794 --- /dev/null +++ b/docs/jdbct4ref_guide/src/asciidoc/_chapters/lob_management.adoc @@ -0,0 +1,288 @@ +//// +/** + *@@@ START COPYRIGHT @@@ + * 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. + * @@@ END COPYRIGHT @@@ + */ +//// + +[[managing-the-sql-tables-for-blob-and-clob-data]] += Managing the SQL Tables for BLOB and CLOB Data + +This chapter describes for database administrators the creation and +management of the tables required to support LOB data. + +NOTE: BLOB and CLOB are not native data types in a {project-name} +database. But database administrators can create SQL base tables that +have BLOB and CLOB columns by using either the Type 4 driver or special +SQL syntax in as described in this chapter. + +For management purposes, CLOB and BLOB data is referred to as large +object (LOB) data, which can represent either data type. + +[[before-you-begin-managing-lob-data]] +== Before You Begin Managing LOB Data + +Before reading this chapter, also read +<<Architecture for LOB Support, Architecture for LOB Support>>, +which describes the files for the tables that contain LOB data. + +[creating-base-tables-that-have-lob-columns]] +== Creating Base Tables that Have LOB Columns + +You can use trafci or write JDBC programs to create base tables that have LOB columns. + +[[data-types-for-lob-columns]] +=== Data Types for LOB Columns + +The data types for the LOB columns are: + +* `CLOB`: Character large object data +* `BLOB`: Binary large object data + +NOTE: The CLOB and BLOB data type specification is special syntax that +is allowed for use in base tables accessed by the Type 4 driver as +described in this manual. + +[[using-trafci-to-create-base-tables-that-have-lob-columns]] +=== Using trafci To Create Base Tables that Have LOB Columns + +To create a base table that has LOB columns using trafci: + +1. Type this special commands in to enable creating tables that have LOB columns: ++ +``` +CONTROL QUERY DEFAULT TRAF_BLOB_AS_VARCHAR 'OFF' ; +CONTROL QUERY DEFAULT TRAF_CLOB_AS_VARCHAR 'OFF' ; +``` + +2. Type the CREATE TABLE statement; for example, you might use the +following simple form of the statement: ++ +``` +CREATE TABLE table1 +( c1 INTEGER NOT NULL +, c2 CLOB +, c3 BLOB +, PRIMARY KEY( c1 ) +) +; +``` ++ +* `table1`: The name of the base table. ++ +NOTE: If different LOB tables are used for storing BLOB or CLOB data, +the base table name for a table with BLOB or CLOB columns must be unique +across all catalogs and schemas. Otherwise, the driver will give +incorrect data to the application in cases where the LOB tables used get +erroneously switched or changed. +* `c1 Column 1`: Defined as the INTEGER data type with the NOT NULL constraint. +* `c2 Column 2`: Defined as the CLOB data type. +* `c3 Column 3`: Defined as the BLOB data type. +* `PRIMARY KEY`: Specifies `c1` as the primary key. + +Use this example as the archetype for creating base tables. For +information about valid names for tables (`table1`) and +columns (`c1`, `c2`, and `c3`) and for information about the CREATE TABLE statement, see the +{docs-url}/sql_reference/index.html[{project-name} SQL Reference Manual]. + +[[using-jdbc-programs-to-create-base-tables-that-have-lob-columns]] +=== Using JDBC Programs To Create Base Tables that Have LOB Columns + +When using a JDBC Program to create base tables that have LOB columns, +put the CREATE TABLE statements in the program as you would any other +SQL statement. For an example of the CREATE TABLE statement, see the discussion +<<using-trafci-to-create-base-tables-that-have-lob-columns, Using trafci To Create Base Tables that Have LOB Columns>> . + +[[managing-lob-data-by-using-the-lob-admin-utility]] +== Managing LOB Data by Using the Lob Admin Utility + +Use the Lob Admin Utility (T4LobAdmin) for the following tasks: + +* Creating the LOB table (a table that holds LOB data). +* Creating the SQL triggers for the LOB columns in the base tables to ensure that orphan LOB data does not occur in a LOB table. + +NOTE: If you are creating triggers, ensure that the base table that +contains the CLOB column or BLOB column has already been created. + +Information about using the Lob Admin Utility is described under these topics. + +[[running-the-lob-admin-utility]] +=== Running the Lob Admin Utility + +Run the T4LobAdmin utility from the workstation. The format of the +command is: + +``` +java [java_options] org.trafodion.t4jdbc.T4LobAdmin [prog_options] [table_name] +``` + +[[java-options]] +==== java_options + +The `java_options` should specify the Type 4 driver properties in a +properties file on the java command line in the `-D` option. + +``` +-Dhpt4jdbc.properties=<properties file name> +``` + +where the properties file should include the following Type 4 driver properties, as applicable: + +[cols="25%,75%",options="header" ] +|=== +| Property | Description +| `blobtablename` | Specifies LOB table for BLOB columns. Required if BLOB columns are involved. See <<lob-table-name-properties, LOB Table Name Properties>>. +| `clobTableName` | Specifies the LOB table for CLOB columns. Required if CLOB columns are involved. See <<lob-table-name-properties, LOB Table Name Properties>>. +| `url` | URL for the Type 4 driver connection. See <<url,url Property>>. +| `usr` | User name for the Type 4 driver connection. See <<user, user Property>>. +| `password` | Password associated with the user. See <<password, password Property>>. +|=== + +[[program-options]] +==== program_options + +[cols="25%,75%",options="header" ] +|=== +| prog_option | Description +| `-help` | Displays help information +| `-exec` | Runs the SQL statements that are generated. +| `-create` | Generates SQL statements to create LOB tables. These statements describe the architecture of the tables and, therefore, provide a description of the LOB tables. +|=== + +[[table-name]] +==== table_name + +The *table_name* represents a base table that contains LOB columns. The +*table_name* is of the form: + +``` +[catalogName.][schemaName.]baseTableName +``` + +For information about catalog, schema, and table names, see the +{docs-url}/sql_reference/index.html[{project-name} SQL Reference Manual]. + +[[help-listing-from-the-type-4-lob-admin-utility]] +=== Help Listing From the Type 4 Lob Admin Utility + +To display help for the Type 4 Lob Admin Utility, type: + +``` +java org.trafodion.t4jdbc.T4LobAdmin -help +``` + +*Example* + +``` +Apache Trafodion T4 Lob Admin Utility 1.0 (c) Copyright 2015-2016 +org.trafodion.t4jdbc.T4LobAdmin [<prog_options>] [<table_name>] + +<java_options> is: + [-Dhpt4jdbc.properties=<properties file>] +where <properties file> has values for the following: + clobTableName - CLOB table name + blobTableName - BLOB table name + url - URL used for the Type 4 connection + user - User name for the Type 4 connection + password - Password for associated with the user + +<prog_options> is: + [-exec] [-create] [-trigger] [-help] [-drop] [-out <filename>] +where -help - Display this information. + -exec - Execute the SQL statements that are generated. + -create - Generate SQL statements to create LOB tables. + -trigger - Generate SQL statements to create triggers for <table_name>. + -drop - Generate SQL statements to drop triggers for <table_name>. + -out - Write the SQL statements to <filename>. + +<clobTableName> | <blobTableName> is: + <catalogName>.<schemaName>.<lobTableName> + +<table_name> is: + [<catalogName>.][<schemaName>.]<baseTableName> + +<baseTableName> is the table that contains LOB column(s). TableName> is the +table that contains the LOB data. +``` + +[[creating-lob-tables]] +=== Creating LOB Tables + +Except as noted below, use the `-create` and `-execute` options of the Lob +Admin Utility to create LOB tables. + +NOTE: Partitioned LOB tables must be manually created. You cannot use +the Lob Admin Utility if your site needs partitioned LOB tables. Do not +use the -execute option of the Lob Admin Utility. Follow these steps to +manually create partitioned LOB tables: + +1. Use the `-create` and `-out` options of the Lob Admin Utility to have SQL statements written to a file. +2. Modify the generated SQL statements as needed for your partitioning requirements. +3. Add the modified SQL statements to a trafci obey file. +4. Run the script file from trafci by using obey command. + +[[using-sql-triggers-to-delete-lob-data]] +=== Using SQL Triggers to Delete LOB Data + +Use the Type 4 Lob Admin Utility to generate triggers on SQL tables that +delete LOB data from the LOB table when the base row is deleted. These +triggers ensure that orphan LOB data does not occur in the LOB table. To +manage the triggers, use these Type 4 Lob Admin Utility options: + +* `-trigger`: Generates SQL statements to create triggers. +* `-drop`: Generates SQL statements to drop triggers. +* `-exec`: Executes the SQL statements that are generated. + +For example, the following command generates the SQL statements to +create the triggers for the base table `sales.paris.pictures`, which +contains a BLOB column, and executes those statements. + +``` +java -Dhpt4jdbc.blobTableName=sales.paris.lobTable4pictures / +org.trafodion.t4jdbc.T4LobAdmin -trigger -exec sales.paris.pictures +``` + +[[limitations-of-lob-data-clob-and-blob-data-types]] +=== Limitations of LOB Data (CLOB and BLOB Data Types) + +Limitations of the CLOB and BLOB data types, collectively referred to as LOB data, are: + +* LOB columns can only be in the target column list of these SQL statements: + +** INSERT statement. + +** Select list of a SELECT statement. + +** Column name in the SET clause of an UPDATE statement. + +* LOB columns cannot be referenced in the SQL functions and expressions. + +* LOB data is not deleted from the LOB table when the base row is deleted unless a trigger is established. For information about triggers, +see <<using-sql-triggers-to-delete-lob-data, Using SQL Triggers to Delete LOB Data>> + +* LOB data is not accessible if the base table name is changed. + +* The name of a base table that has CLOB or BLOB columns must be unique across all catalogs and schemas when more than one of these base tables +share a single LOB table. ++ +NOTE: Adding a trigger can affect up to three schemas. For each schema, you must either own the schema or be the super ID. + + + +* The schema where the trigger is created. +* The schema where the subject table (LOB table) exists. +* The schema where the referenced table (base table) exists. + http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c2116c2b/docs/jdbct4ref_guide/src/asciidoc/_chapters/messages.adoc ---------------------------------------------------------------------- diff --git a/docs/jdbct4ref_guide/src/asciidoc/_chapters/messages.adoc b/docs/jdbct4ref_guide/src/asciidoc/_chapters/messages.adoc new file mode 100644 index 0000000..7fc168f --- /dev/null +++ b/docs/jdbct4ref_guide/src/asciidoc/_chapters/messages.adoc @@ -0,0 +1,1943 @@ +//// +/** + *@@@ START COPYRIGHT @@@ + * 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. + * @@@ END COPYRIGHT @@@ + */ +//// + +[[messages]] += Messages + +[[about-the-message-format]] +== 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. ] +``` + +[[getting-help]] +== Getting Help + +Some messages have no recovery information. Please contact {project-support} for assistance. + +[[type-4-driver-error-messages]] +== Type 4 Driver Error Messages + +=== 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. + +=== 01056 25000 + +``` +01056 25000 Invalid transaction state. +``` + +*Cause*: Transaction state is incorrect. + +*Effect*: Operation fails. + +*Recovery*: Retry. + +=== 01118 S1008 + +``` +01118 S1008 Operation canceled. +``` + +*Cause*: The operation was canceled. + +*Effect*: Operation fails. + +*Recovery*: Retry operation. + +=== 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 {project-support} to check logs for server errors and +to analyze accompanying errors and warnings. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 29004 HY024 + +``` +29004 HY024 Invalid transaction isolation value. +``` + +*Cause*: An attempt was made to set the transaction isolation level to an invalid value. + +*Effect*: `HPT4Connection.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`. + +=== 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`. + +=== 29006 HY000 + +``` +29006 HY000 Invalid Result Set concurrency +``` + +*Cause*: An attempt was made to set an invalid result-set concurrency value. + +*Effect*: The `HPT4Statement` call with `resultSetConcurrency` fails. + +*Recovery*: Valid resultSetConcurrency values are: CONCUR_READ_ONLY and +CONCUR_UPDATABLE. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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`. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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`. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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). + +<<< +=== 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`. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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 {project-support} and report the entire message. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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 +`hpt4jdbc.blobTableName`, or the property is set to an invalid value. + +*Effect*: The application cannot access BLOB columns. + +*Recovery*: Set the `hpt4jdbc.blobTableName` property to a valid LOB table +name. The LOB table name is of format `catalog.schema.lobTableName`. + +=== 29060 HY000 + +``` +29060 HY000 'hpt4jdbc.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 +`propertyhpt4jdbc.clobTableName` property, or the property is set to null +value or set to an invalid value. + +*Effect*: The application cannot access CLOB columns. + +*Recovery*: Set the `hpt4jdbc.clobTableName` property to a valid LOB table +name. The LOB table name is of format `catalog.schema.lobTableName`. + +=== 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. + +<<< +=== 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. + +=== 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. + +=== 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. + +<<< +=== 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. + +=== 29100 HY000 + +``` +29100 HY000 An internal error occurred. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} and report the entire message. + +=== 29101 HY000 + +``` +29101 HY000 Contact your service provider. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} (the service provider) and report the entire message. + +<<< +=== 29102 HY000 + +``` +29101 HY000 Error while parsing address <address>. +``` +*Cause*: The address format was not recognized. + +*Effect*: Operation fails. + +*Recovery*: Refer to <<url, url Property>> for the valid address format. + +=== 29103 HY000 + +``` +29103 HY000 Address is null. +``` + +*Cause*: The address was empty. + +*Effect*: Operation fails. + +*Recovery*: Refer to <<url, url Property>> for the valid address format. + +=== 29104 HY000 + +``` +29104 HY000 Expected suffix: <suffix>. +``` + +*Cause*: The address suffix was incorrect or missing. + +*Effect*: Operation fails. + +*Recovery*: Refer to <<url, url Property>> for the valid address format. + +<<< +=== 29105 HY000 + +``` +29105 HY000 Unknown prefix for address. +``` + +*Cause*: The address prefix was incorrect or missing. + +*Effect*: Operation fails. + +*Recovery*: Refer to <<url, url Property>> for the valid address format. + +=== 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, url Property>> for the valid address format. + +=== 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, url Property>> for the valid address format. + +<<< +=== 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 {project-name} platform was not in +the expected format. Contact {project-support} and report the entire message. + +=== 29109 HY000 + +``` +29109 HY000 //<{IP Address|Machine Name}[:port]/database name> +``` + +*Cause*: Informational message. + +*Effect*: Not applicable. + +*Recovery*: Not applicable. + +=== 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, url Property>> for the valid address format. + +<<< +=== 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, url Property>> for the +valid address format. + + +=== 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, url Property>> for the valid address format. + +=== 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. + +<<< +=== 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. + + + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 29118 HY000 + +``` +29118 HY000 A write to a bad map pointer occurred. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} and report the entire message. + +=== 29119 HY000 + +``` +29119 HY000 A write to a bad par pointer occurred. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} and report the entire message. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 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. + + +=== 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. + + +<<< +=== 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. + + + +=== 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. + + +=== 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. + +<<< +=== 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. + + +=== 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. + + +=== 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. + + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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. + + + +=== 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 {project-support} to check logs for server +({project-name} platform) errors and to analyze accompanying errors and +warnings. + +=== 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. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 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. + + +=== 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. + +=== 29152 HY000 + +``` +29152 HY000 No more ports available to start ODBC servers. +``` + +*Cause*: Unable to perform this operation. + +*Effect*: Operation fails. + + +*Recovery*: Contact {project-support} to check logs for server ({project-name} +platform) errors. Evaluate the returned value from the `getCause` method +on the `Exception` to determine the appropriate recovery action. + +<<< +=== 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. + + +=== 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. + +=== 29155 HY000 + +``` +29155 HY000 Unknown message type. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: Contact {project-support} to check logs for server ({project-name} +platform) errors and to analyze errors and warnings. + +<<< +=== 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 {project-support} to check logs for server ({project-name} +platform) errors and to analyze accompanying errors and warnings. + + +=== 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 {project-support} to check logs for server ({project-name} +platform) errors and to analyze accompanying errors and warnings. + +=== 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 HP connectivity +server. + +<<< +=== 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 HP connectivity +server. + + +=== 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 {project-support} and report the entire message. + +=== 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 {project-support} and report the entire message. + +<<< +=== 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 {project-support} to check logs for server ({project-name} +platform) errors and to analyze accompanying errors and warnings. + + +=== 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. + +=== 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. + +<<< +=== 29165 HY000 + +``` +29165 HY000 Unknown connect reply error: <error>. +``` + +*Cause*: A message returned by the server. + +*Effect*: Operation fails. + +*Recovery*: Contact {project-support} to check logs for server ({project-name} +platform) errors and to analyze accompanying errors and warnings. + + +=== 29166 HY000 + +``` +29166 HY000 This method is not implemented. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} and report the entire message. + +=== 29167 HY000 + +``` +29167 HY000 Internal error. An internal index failed consistency check. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} and report the entire message. + +<<< +=== 29168 HY000 + +``` +29168 HY000 Unknown reply message error: <error> error detail: <error_detail>. +``` + +*Cause*: Server returned an error. + +*Effect*: Operation fails. + +*Recovery*: Contact {project-support} to check logs for server ({project-name} +platform) errors and to analyze accompanying errors and warnings. + + +=== 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 {project-support} and report the entire message. + +=== 29170 HY000 + +``` +29170 HY000 Invalid parameter value. +``` + +*Cause*: Internal error. + +*Effect*: Operation fails. + +*Recovery*: None. Contact {project-support} and report the entire message. + +<<< +=== 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. + + +=== 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. + +=== 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. + +<<< +=== 29175 HY000 + +``` +29175 HY000 Unknown Error {0}. +``` + +*Cause*: An unknown error occurred during connection {0}. + +*Effect*: The connection fails. + +*Recovery*: Retry the connection. + + +=== 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 {project-support} to check logs for server ({project-name} +platform) errors regarding the DCS server. + +=== 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. + +<<< +=== 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 {project-name} platform. + +*Effect*: The connection uses the {project-name} platform default data +source `TDM_Default_DataSource`. + +*Recovery*: Ignore the warning or contact your {project-name} database +administrator to add the server-side data source that the application +specified. + + +=== 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 {project-support} to check for errors in the server event log +on the reported segment. +