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);