List:Commits« Previous MessageNext Message »
From:mmatthews Date:May 30 2006 7:31pm
Subject:Connector/J commit: r5322 - branches/branch_3_1/connector-j/src/com/mysql/jdbc
View as plain text  
Modified:
   branches/branch_3_1/connector-j/src/com/mysql/jdbc/Connection.java
Log:
Push truncation checks on writes to server if possible (works only for MySQL-5.0, but more performant).

Modified: branches/branch_3_1/connector-j/src/com/mysql/jdbc/Connection.java
===================================================================
--- branches/branch_3_1/connector-j/src/com/mysql/jdbc/Connection.java	2006-05-30 19:29:25 UTC (rev 5321)
+++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/Connection.java	2006-05-30 19:31:01 UTC (rev 5322)
@@ -1787,6 +1787,8 @@
 		if (versionMeetsMinimum(4, 1, 0)) {
 			configureClientCharacterSet();
 		}
+		
+		setupServerForTruncationChecks();
 	}
 
 	private void checkAndCreatePerformanceHistogram() {
@@ -3888,8 +3890,44 @@
 				setAllowMultiQueries(false);
 			}
 		}
+		
+		//
+		// Server can do this more efficiently for us
+		//
+		
+		setupServerForTruncationChecks();
 	}
 
+	private void setupServerForTruncationChecks() throws SQLException {
+		if (getJdbcCompliantTruncation()) {
+			if (versionMeetsMinimum(5, 0, 2)) {
+				String currentSqlMode = 
+					(String)this.serverVariables.get("sql_mode");
+				
+				if (currentSqlMode == null ||
+						currentSqlMode.length() == 0 ||
+						StringUtils.indexOfIgnoreCase(currentSqlMode, "STRICT_TRANS_TABLES") == -1) {
+					StringBuffer commandBuf = new StringBuffer("SET sql_mode='");
+					
+					if (currentSqlMode != null && currentSqlMode.length() > 0) {
+						commandBuf.append(currentSqlMode);
+						commandBuf.append(",");
+					}
+					
+					commandBuf.append("STRICT_TRANS_TABLES'");
+					
+					execSQL(null, commandBuf.toString(), -1, null,
+							java.sql.ResultSet.TYPE_FORWARD_ONLY,
+							java.sql.ResultSet.CONCUR_READ_ONLY, false, false,
+							this.database, true, Statement.USES_VARIABLES_FALSE, false);
+					
+					setJdbcCompliantTruncation(false); // server's handling this for us now
+					setJdbcCompliantTruncationForReads(true);
+				}	
+			}
+		}
+	}
+
 	protected boolean isClientTzUTC() {
 		return this.isClientTzUTC;
 	}

Thread
Connector/J commit: r5322 - branches/branch_3_1/connector-j/src/com/mysql/jdbcmmatthews30 May