You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by li...@apache.org on 2016/11/17 16:19:17 UTC
[4/5] incubator-trafodion git commit: [LOB]change exception to
SQLException
[LOB]change exception to SQLException
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/5e7acbb1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/5e7acbb1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/5e7acbb1
Branch: refs/heads/master
Commit: 5e7acbb1f801f02c71ae6d33c681720217fd61ee
Parents: dbcd412
Author: Weqing Xu <xu...@gmail.com>
Authored: Thu Nov 10 20:55:14 2016 +0800
Committer: Weqing Xu <xu...@gmail.com>
Committed: Thu Nov 10 20:55:14 2016 +0800
----------------------------------------------------------------------
.../jdbcT4/src/main/java/T4Messages.properties | 5 ++-
.../trafodion/jdbc/t4/ExtractLobMessage.java | 38 ++++++++++----------
.../org/trafodion/jdbc/t4/ExtractLobReply.java | 16 +++++----
.../java/org/trafodion/jdbc/t4/TrafT4Blob.java | 26 +++++++++++---
.../java/org/trafodion/jdbc/t4/TrafT4Clob.java | 30 ++++++++--------
.../org/trafodion/jdbc/t4/TrafT4ResultSet.java | 2 --
6 files changed, 68 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5e7acbb1/core/conn/jdbcT4/src/main/java/T4Messages.properties
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/T4Messages.properties b/core/conn/jdbcT4/src/main/java/T4Messages.properties
index 443268b..35b5bb3 100644
--- a/core/conn/jdbcT4/src/main/java/T4Messages.properties
+++ b/core/conn/jdbcT4/src/main/java/T4Messages.properties
@@ -583,7 +583,7 @@ translation_of_parameter_failed_sqlcode=29172
#
# New Messages for LOB Support From Type 4
#
-blob_io_error_msg=IO Error while writing bytes to blob
+blob_io_error_msg=IO Error while writing bytes to blob: {1}
blob_io_error_sqlstate=S1000
blob_io_error_sqlcode=29064
@@ -595,6 +595,9 @@ out_of_lob_bound_msg=Accessing position is out of the Lob object's boundary
out_of_lob_bound_sqlstate=HY000
out_of_lob_bound_sqlcode=29063
+clob_null_string_para_msg=String to set can not be null
+clob_null_string_para_sqlstate=HY000
+clob_null_string_para_sqlcode=29065
#
# New Messages for LOB Support From Type 2
#
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5e7acbb1/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobMessage.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobMessage.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobMessage.java
index 89620b2..6c54ff6 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobMessage.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobMessage.java
@@ -21,37 +21,39 @@
package org.trafodion.jdbc.t4;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.UnsupportedCharsetException;
+import java.sql.SQLException;
class ExtractLobMessage {
static final short LOB_EXTRACT_LEN = 0;
static final short LOB_EXTRACT_BUFFER = LOB_EXTRACT_LEN + 1;
- static final short LOB_EXTRATC_BOTH_LEN_AND_BUFFER = LOB_EXTRACT_BUFFER + 1;
+ static final short LOB_EXTRACT_BOTH_LEN_AND_BUFFER = LOB_EXTRACT_BUFFER + 1;
- static LogicalByteArray marshal(short extractType, String lobHandle, int lobHandleCharset, long lobLength, InterfaceConnection ic) throws CharacterCodingException, UnsupportedCharsetException{
+ static LogicalByteArray marshal(short extractType, String lobHandle, int lobHandleCharset, long lobLength, InterfaceConnection ic) throws SQLException{
int wlength = Header.sizeOf();
LogicalByteArray buf;
- byte[] lobHandleBytes = ic.encodeString(lobHandle, InterfaceUtilities.SQLCHARSETCODE_UTF8);
+ try {
+ byte[] lobHandleBytes = ic.encodeString(lobHandle, InterfaceUtilities.SQLCHARSETCODE_UTF8);
- wlength += TRANSPORT.size_int;
- //wlength += TRANSPORT.size_long; // length of lobHandle
+ wlength += TRANSPORT.size_int;
+ // wlength += TRANSPORT.size_long; // length of lobHandle
- if (lobHandle.length() > 0) {
- wlength += TRANSPORT.size_bytesWithCharset(lobHandleBytes);
- }
+ if (lobHandle.length() > 0) {
+ wlength += TRANSPORT.size_bytesWithCharset(lobHandleBytes);
+ }
- if (lobLength > 0) {
- wlength += TRANSPORT.size_long;
- }
+ if (lobLength > 0) {
+ wlength += TRANSPORT.size_long;
+ }
- buf = new LogicalByteArray(wlength, Header.sizeOf(), ic.getByteSwap());
+ buf = new LogicalByteArray(wlength, Header.sizeOf(), ic.getByteSwap());
- buf.insertInt(extractType);
- //buf.insertInt(lobHandle.length());
- buf.insertStringWithCharset(lobHandleBytes, lobHandleCharset);
- return buf;
+ buf.insertInt(extractType);
+ buf.insertStringWithCharset(lobHandleBytes, lobHandleCharset);
+ return buf;
+ } catch (Exception e) {
+ throw TrafT4Messages.createSQLException(ic.t4props_, ic.getLocale(), "unsupported_encoding", "UTF-8");
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5e7acbb1/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobReply.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobReply.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobReply.java
index ae98e12..ca2c7f2 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobReply.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/ExtractLobReply.java
@@ -21,8 +21,6 @@
package org.trafodion.jdbc.t4;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.UnsupportedCharsetException;
import java.sql.SQLException;
class ExtractLobReply {
@@ -30,19 +28,16 @@ class ExtractLobReply {
SQLWarningOrError[] errorList;
odbc_SQLSvc_ExtractLob_exc_ m_p1;
- String m_p2;
- SQLItemDescList_def m_p3;
- ERROR_DESC_LIST_def m_p4;
String proxySyntax = "";
int lobDataLen = 0;
byte[] lobDataValue = null;
- ExtractLobReply(LogicalByteArray buf, InterfaceConnection ic) throws CharacterCodingException,
- UnsupportedCharsetException, SQLException {
+ ExtractLobReply(LogicalByteArray buf, InterfaceConnection ic) throws SQLException {
buf.setLocation(Header.sizeOf());
+ try {
m_p1 = new odbc_SQLSvc_ExtractLob_exc_();
m_p1.extractFromByteArray(buf, ic);
@@ -52,5 +47,12 @@ class ExtractLobReply {
lobDataValue = buf.extractByteArray(lobDataLen);
}
}
+ }
+ catch (SQLException e) {
+ throw e;
+ }
+ catch (Exception e) {
+ throw TrafT4Messages.createSQLException(ic.t4props_, ic.getLocale(), "unsupported_encoding", "UTF-8");
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5e7acbb1/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Blob.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Blob.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Blob.java
index aaf430b..212e2e2 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Blob.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Blob.java
@@ -31,11 +31,19 @@ import java.util.logging.Level;
import java.util.logging.LogRecord;
public class TrafT4Blob implements Blob {
- private byte[] data_;
+ private byte[] data_ = null;
private boolean isFreed_ = false;
+ private String lobHandle_ = null;
private TrafT4Connection connection_ = null;
- public TrafT4Blob(TrafT4Connection connection, String lobHandle) throws SQLException {
+ public TrafT4Blob(TrafT4Connection connection, String lobHandle) throws SQLException{
+ if (connection == null) {
+ throw TrafT4Messages.createSQLException(connection_.props_, null, null, null);
+ }
+
+ this.connection_ = connection;
+ this.lobHandle_ = lobHandle;
+
if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
Object p[] = T4LoggingUtilities.makeParams(connection_.props_, connection, lobHandle);
connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "getClob", "", p);
@@ -50,6 +58,14 @@ public class TrafT4Blob implements Blob {
String temp = lf.format(lr);
connection_.props_.getLogWriter().println(temp);
}
+
+ T4Connection t4connection = this.connection_.getServerHandle().getT4Connection();
+ LogicalByteArray wbuffer = ExtractLobMessage.marshal(ExtractLobMessage.LOB_EXTRACT_BUFFER, lobHandle_, 1, 0,
+ connection_.ic_);
+ LogicalByteArray rbuffer = t4connection.getReadBuffer(TRANSPORT.SRVR_API_EXTRACTLOB, wbuffer);
+ ExtractLobReply reply = new ExtractLobReply(rbuffer, connection_.ic_);
+
+ this.data_ = reply.lobDataValue;
}
public InputStream getBinaryStream() throws SQLException {
@@ -78,7 +94,7 @@ public class TrafT4Blob implements Blob {
if((startPos > data_.length) || (startPos < 0) || (length < 0))
throw TrafT4Messages.createSQLException(this.connection_.props_, this.connection_.getLocale(),
- "out_of_lob_bound_msg", null);
+ "out_of_lob_bound", null);
if((endPos - 1) > data_.length) {
length = data_.length - startPos;
@@ -103,7 +119,7 @@ public class TrafT4Blob implements Blob {
out.write(bytes, offset, len);
} catch (IOException e) {
throw TrafT4Messages.createSQLException(this.connection_.props_, this.connection_.getLocale(),
- "blob_io_error", null);
+ "blob_io_error", e.getMessage());
} finally {
try {
out.close();
@@ -135,7 +151,7 @@ public class TrafT4Blob implements Blob {
if (len < 0 || len > this.data_.length) {
throw TrafT4Messages.createSQLException(this.connection_.props_, this.connection_.getLocale(),
- "out_of_lob_bound_msg", null);
+ "out_of_lob_bound", null);
}
byte[] newData = new byte[(int) len];
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5e7acbb1/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Clob.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Clob.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Clob.java
index a80cfdd..6f51a8a 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Clob.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Clob.java
@@ -25,6 +25,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.sql.Clob;
import java.sql.SQLException;
@@ -33,8 +34,8 @@ import java.util.logging.LogRecord;
public class TrafT4Clob implements Clob {
- private String data_;
- private boolean isFreed_;
+ private String data_ = null;
+ private boolean isFreed_ = false;
private String lobHandle_ = null;
private TrafT4Connection connection_ = null;
@@ -60,20 +61,17 @@ public class TrafT4Clob implements Clob {
connection_.props_.getLogWriter().println(temp);
}
- try {
- if (lobHandle_ != null) {
- T4Connection t4connection = this.connection_.getServerHandle().getT4Connection();
- LogicalByteArray wbuffer = ExtractLobMessage.marshal(ExtractLobMessage.LOB_EXTRACT_BUFFER, lobHandle_, 1, 0,
- connection_.ic_);
- LogicalByteArray rbuffer = t4connection.getReadBuffer(TRANSPORT.SRVR_API_EXTRACTLOB, wbuffer);
- ExtractLobReply reply = new ExtractLobReply(rbuffer, connection_.ic_);
-
- this.data_ = new String(reply.lobDataValue, "UTF-8");
- isFreed_ = false;
- }
- }
- catch (Exception e) {
+ T4Connection t4connection = this.connection_.getServerHandle().getT4Connection();
+ LogicalByteArray wbuffer = ExtractLobMessage.marshal(ExtractLobMessage.LOB_EXTRACT_BUFFER, lobHandle_, 1, 0,
+ connection_.ic_);
+ LogicalByteArray rbuffer = t4connection.getReadBuffer(TRANSPORT.SRVR_API_EXTRACTLOB, wbuffer);
+ ExtractLobReply reply = new ExtractLobReply(rbuffer, connection_.ic_);
+ try {
+ this.data_ = new String(reply.lobDataValue, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw TrafT4Messages.createSQLException(this.connection_.ic_.t4props_, this.connection_.ic_.getLocale(),
+ "unsupported_encoding", "UTF-8");
}
}
public void free() throws SQLException {
@@ -165,7 +163,7 @@ public class TrafT4Clob implements Clob {
"out_of_lob_bound_msg", null);
}
if (str == null) {
-
+ throw TrafT4Messages.createSQLException(this.connection_.props_, this.connection_.getLocale(), "clob_null_string_para", null);
}
StringBuilder buf = new StringBuilder(this.data_);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/5e7acbb1/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
index dd69a93..4793787 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
@@ -4861,7 +4861,6 @@ public class TrafT4ResultSet extends TrafT4Handle implements java.sql.ResultSet
outputDesc_[columnIndex - 1].checkValidNumericConversion(connection_.getLocale());
lobHandle = getLocalString(columnIndex);
- int dataType = outputDesc_[columnIndex - 1].dataType_;
if (lobHandle != null) {
return new TrafT4Clob(connection_, lobHandle);
@@ -4910,7 +4909,6 @@ public class TrafT4ResultSet extends TrafT4Handle implements java.sql.ResultSet
outputDesc_[columnIndex - 1].checkValidNumericConversion(connection_.getLocale());
lobHandle = getLocalString(columnIndex);
- int dataType = outputDesc_[columnIndex - 1].dataType_;
if (lobHandle != null) {
return new TrafT4Blob(connection_, lobHandle);