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 2018/04/13 12:38:56 UTC

[16/32] trafodion git commit: [TRAFODION-2740]add property to set the LOB chunk size

[TRAFODION-2740]add property to set the LOB chunk size


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/835a4894
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/835a4894
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/835a4894

Branch: refs/heads/master
Commit: 835a48945afe3cc19ec58ac94e22b323db69d5cf
Parents: ea80ab3
Author: Weiqing Xu <we...@esgyn.cn>
Authored: Sat Sep 23 17:47:33 2017 +0000
Committer: Weiqing Xu <we...@esgyn.cn>
Committed: Sat Sep 23 17:47:33 2017 +0000

----------------------------------------------------------------------
 .../org/trafodion/jdbc/t4/T4Properties.java     | 28 +++++++++++++++++++-
 .../java/org/trafodion/jdbc/t4/TrafT4Lob.java   |  4 +--
 .../org/trafodion/jdbc/t4/T4DriverTest.java     | 28 ++++++++++++++++++++
 3 files changed, 57 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/835a4894/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
index 917cf45..202bc27 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
@@ -119,7 +119,9 @@ public class T4Properties {
 	String clobTableName_;
 	String blobTableName_;
 
-	// private short transportBufferSize_;
+    private int lobChunkSize_ = 10; // default 10M
+
+    // private short transportBufferSize_;
 	private boolean useArrayBinding_;
 	private boolean batchRecovery_;
 	private final String propPrefix_ = "t4jdbc.";
@@ -425,6 +427,8 @@ public class T4Properties {
 		setKeepAlive(getProperty("keepAlive"));
 		setTokenAuth(getProperty("tokenAuth"));
         setTcpNoDelay(getProperty("tcpNoDelay"));
+
+        setLobChunkSize(getProperty("lobChunkSize"));
 	}
 
 	T4Properties getT4Properties() {
@@ -518,6 +522,8 @@ public class T4Properties {
 		props.setProperty("tokenAuth", String.valueOf(_tokenAuth));
         props.setProperty("tcpNoDelay", String.valueOf(_tcpNoDelay));
         
+        props.setProperty("lobChunkSize", String.valueOf(lobChunkSize_));
+
 		return props;
 	}
 
@@ -1884,6 +1890,26 @@ public class T4Properties {
 		return reserveDataLocator_;
 	}
 
+    public int getLobChunkSize() {
+        return lobChunkSize_;
+    }
+
+    public void setLobChunkSize(int lobChunkSize_) {
+        this.lobChunkSize_ = lobChunkSize_;
+    }
+
+    public void setLobChunkSize(String val) {
+        this.lobChunkSize_ = 10;
+        if (val != null) {
+            try {
+                this.lobChunkSize_ = Integer.parseInt(val);
+            } catch (NumberFormatException ex) {
+                sqlExceptionMessage_ = "Incorrect value for setLobChunkSize set: " + val + ex.getMessage();
+                this.lobChunkSize_ = 10;
+            }
+        }
+    }
+
 	/**
 	 * Returns the rounding mode set for the driver as an Integer value with one
 	 * of the following values. static int ROUND_CEILING Rounding mode to round

http://git-wip-us.apache.org/repos/asf/trafodion/blob/835a4894/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Lob.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Lob.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Lob.java
index f18377b..0643173 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Lob.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Lob.java
@@ -103,7 +103,7 @@ public abstract class TrafT4Lob {
 
 		try {
 			int pos = 0;
-			int chunkSize = 100 * 1024 * 1024;
+            int chunkSize = connection_.props_.getLobChunkSize() * 1024 * 1024;
 			while (pos < length) {
 				int remainSize = (int) (length - pos);
 				int fecthSize = remainSize < chunkSize ? remainSize : chunkSize;
@@ -153,7 +153,7 @@ public abstract class TrafT4Lob {
 		    return ;
 		T4Connection t4connection = this.connection_.getServerHandle().getT4Connection();
 
-		final long chunkSize = 100 * 1024 * 1024;
+        final long chunkSize = connection_.props_.getLobChunkSize() * 1024 * 1024;
 		LogicalByteArray wbuffer = null;
 
 		byte[] valueBuffer = null;

http://git-wip-us.apache.org/repos/asf/trafodion/blob/835a4894/core/conn/jdbcT4/src/test/java/org/trafodion/jdbc/t4/T4DriverTest.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/test/java/org/trafodion/jdbc/t4/T4DriverTest.java b/core/conn/jdbcT4/src/test/java/org/trafodion/jdbc/t4/T4DriverTest.java
index e44c97a..e158e7b 100644
--- a/core/conn/jdbcT4/src/test/java/org/trafodion/jdbc/t4/T4DriverTest.java
+++ b/core/conn/jdbcT4/src/test/java/org/trafodion/jdbc/t4/T4DriverTest.java
@@ -23,7 +23,12 @@
 
 package org.trafodion.jdbc.t4;
 
+import java.sql.Blob;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -39,6 +44,29 @@ public class T4DriverTest {
 
 
 	@Test
+	public void readLob() throws SQLException {
+		Connection conn = null;
+		try {
+			conn = DriverManager.getConnection("jdbc:t4jdbc://192.168.0.36:23400/:", "zz", "zz");
+			Statement stmt = conn.createStatement();
+			ResultSet rs = stmt.executeQuery("select c2 from tlob");
+			while (rs.next()) {
+				Blob blob = rs.getBlob(1);
+				System.out.println("LOB length " + blob.length());
+				System.out.println(new String(blob.getBytes(1, (int)blob.length())));
+			}
+			conn.close();
+			conn = null;
+		}
+		catch (SQLException se) { 
+			System.out.println(se.getMessage());
+		}
+		finally {
+			if (conn != null)
+				conn.close();
+		}
+	}
+	@Test
 	public void acceptsURL() throws SQLException {
 		String url = "jdbc:t4jdbc://localhost:23400/:";
 		Assert.assertTrue(driver.acceptsURL(url));