List:Commits« Previous MessageNext Message »
From:mmatthews Date:March 27 2007 2:50pm
Subject:Connector/J commit: r6371 - branches/branch_3_1/connector-j/src/com/mysql/jdbc branches/branch_5_0/connector-j/src/com/mysql/jdbc trunk/connector-j/sr...
View as plain text  
Modified:
   branches/branch_3_1/connector-j/src/com/mysql/jdbc/ConnectionProperties.java
   branches/branch_5_0/connector-j/src/com/mysql/jdbc/ConnectionProperties.java
   trunk/connector-j/src/com/mysql/jdbc/ConnectionProperties.java
Log:
Fixed issue where exposeAsXML() was letting ordered elements clobber each other if they shared a key (they now are listed in alpha order at the given key).

Modified: branches/branch_3_1/connector-j/src/com/mysql/jdbc/ConnectionProperties.java
===================================================================
--- branches/branch_3_1/connector-j/src/com/mysql/jdbc/ConnectionProperties.java	2007-03-26 16:09:00 UTC (rev 6370)
+++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/ConnectionProperties.java	2007-03-27 14:50:30 UTC (rev 6371)
@@ -596,7 +596,7 @@
 	private BooleanConnectionProperty allowMultiQueries = new BooleanConnectionProperty(
 			"allowMultiQueries",
 			false,
-			"Allow the use of ';' to delimit multiple queries during one statement (true/false, defaults to 'false'",
+			"Allow the use of ';' to delimit multiple queries during one statement (true/false), defaults to 'false'",
 			"3.1.1", SECURITY_CATEGORY, 1);
 
 	private BooleanConnectionProperty allowNanAndInf = new BooleanConnectionProperty(
@@ -1451,9 +1451,16 @@
 
 		Map[] connectionSortMaps = (Map[]) propertyListByCategory
 				.get(CONNECTION_AND_AUTH_CATEGORY);
-		connectionSortMaps[0].put(new Integer(userProp.getOrder()), userProp);
-		connectionSortMaps[0].put(new Integer(passwordProp.getOrder()),
-				passwordProp);
+		TreeMap userMap = new TreeMap();
+		userMap.put(userProp.getPropertyName(), userProp);
+		
+		connectionSortMaps[0].put(new Integer(userProp.getOrder()), userMap);
+		
+		TreeMap passwordMap = new TreeMap();
+		passwordMap.put(passwordProp.getPropertyName(), passwordProp);
+		
+		connectionSortMaps[0]
+				.put(new Integer(passwordProp.getOrder()), passwordMap);
 
 		try {
 			for (int i = 0; i < numPropertiesToSet; i++) {
@@ -1468,7 +1475,16 @@
 				if (orderInCategory == Integer.MIN_VALUE) {
 					sortMaps[1].put(propToGet.getPropertyName(), propToGet);
 				} else {
-					sortMaps[0].put(new Integer(orderInCategory), propToGet);
+					Integer order = new Integer(orderInCategory);
+					
+					Map orderMap = (Map)sortMaps[0].get(order);
+					
+					if (orderMap == null) {
+						orderMap = new TreeMap();
+						sortMaps[0].put(order, orderMap);
+					}
+					
+					orderMap.put(propToGet.getPropertyName(), propToGet);
 				}
 			}
 
@@ -1483,36 +1499,38 @@
 				xmlBuf.append("\">");
 
 				while (orderedIter.hasNext()) {
-					ConnectionProperty propToGet = (ConnectionProperty) orderedIter
-							.next();
-					propToGet.syncDriverPropertyInfo();
-
-					xmlBuf.append("\n  <Property name=\"");
-					xmlBuf.append(propToGet.getPropertyName());
-					xmlBuf.append("\" required=\"");
-					xmlBuf.append(propToGet.required ? "Yes" : "No");
-
-					xmlBuf.append("\" default=\"");
-
-					if (propToGet.getDefaultValue() != null) {
-						xmlBuf.append(propToGet.getDefaultValue());
+					Iterator orderedAlphaIter = ((Map)orderedIter.next()).values().iterator();
+					
+					while (orderedAlphaIter.hasNext()) {
+						ConnectionProperty propToGet = (ConnectionProperty) orderedAlphaIter
+								.next();
+						
+						xmlBuf.append("\n  <Property name=\"");
+						xmlBuf.append(propToGet.getPropertyName());
+						xmlBuf.append("\" required=\"");
+						xmlBuf.append(propToGet.required ? "Yes" : "No");
+	
+						xmlBuf.append("\" default=\"");
+	
+						if (propToGet.getDefaultValue() != null) {
+							xmlBuf.append(propToGet.getDefaultValue());
+						}
+	
+						xmlBuf.append("\" sortOrder=\"");
+						xmlBuf.append(propToGet.getOrder());
+						xmlBuf.append("\" since=\"");
+						xmlBuf.append(propToGet.sinceVersion);
+						xmlBuf.append("\">\n");
+						xmlBuf.append("    ");
+						xmlBuf.append(propToGet.description);
+						xmlBuf.append("\n  </Property>");
 					}
-
-					xmlBuf.append("\" sortOrder=\"");
-					xmlBuf.append(propToGet.getOrder());
-					xmlBuf.append("\" since=\"");
-					xmlBuf.append(propToGet.sinceVersion);
-					xmlBuf.append("\">\n");
-					xmlBuf.append("    ");
-					xmlBuf.append(propToGet.description);
-					xmlBuf.append("\n  </Property>");
 				}
 
 				while (alphaIter.hasNext()) {
 					ConnectionProperty propToGet = (ConnectionProperty) alphaIter
 							.next();
-					propToGet.syncDriverPropertyInfo();
-
+					
 					xmlBuf.append("\n  <Property name=\"");
 					xmlBuf.append(propToGet.getPropertyName());
 					xmlBuf.append("\" required=\"");

Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/ConnectionProperties.java
===================================================================
--- branches/branch_5_0/connector-j/src/com/mysql/jdbc/ConnectionProperties.java	2007-03-26 16:09:00 UTC (rev 6370)
+++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/ConnectionProperties.java	2007-03-27 14:50:30 UTC (rev 6371)
@@ -617,7 +617,7 @@
 	private BooleanConnectionProperty allowMultiQueries = new BooleanConnectionProperty(
 			"allowMultiQueries",
 			false,
-			"Allow the use of ';' to delimit multiple queries during one statement (true/false, defaults to 'false'",
+			"Allow the use of ';' to delimit multiple queries during one statement (true/false), defaults to 'false'",
 			"3.1.1", SECURITY_CATEGORY, 1);
 
 	private BooleanConnectionProperty allowNanAndInf = new BooleanConnectionProperty(
@@ -1174,10 +1174,9 @@
 			"rewriteBatchedStatements",
 			false, 
 			"Should the driver use multiqueries (irregardless of the setting of \"allowMultiQueries\") as well as "
-			+ "rewriting of prepared statements for INSERT into multi-value inserts when executeBatch() is called? Notice that this has the potential "
+			+ "rewriting of prepared statements for INSERT and REPLACE into multi-value inserts/replaces when executeBatch() is called? Notice that this has the potential "
 			+ "for SQL injection if using plain java.sql.Statements and your code doesn't sanitize input correctly.\n\n"
-			+ "Notice that for prepared statements, server-side prepared statements can not currently take advantage of "
-			+ "this rewrite option, and that if you don't specify stream lengths when using PreparedStatement.set*Stream()," 
+			+ "Notice that if you don't specify stream lengths when using PreparedStatement.set*Stream()," 
 			+ "the driver won't be able to determine the optimium number of parameters per batch and you might receive " 
 			+ "an error from the driver that the resultant packet is too large.\n\n"
 			+ "Statement.getGeneratedKeys() for these rewritten statements only works when the entire " 
@@ -1574,9 +1573,16 @@
 
 		Map[] connectionSortMaps = (Map[]) propertyListByCategory
 				.get(CONNECTION_AND_AUTH_CATEGORY);
-		connectionSortMaps[0].put(new Integer(userProp.getOrder()), userProp);
-		connectionSortMaps[0].put(new Integer(passwordProp.getOrder()),
-				passwordProp);
+		TreeMap userMap = new TreeMap();
+		userMap.put(userProp.getPropertyName(), userProp);
+		
+		connectionSortMaps[0].put(new Integer(userProp.getOrder()), userMap);
+		
+		TreeMap passwordMap = new TreeMap();
+		passwordMap.put(passwordProp.getPropertyName(), passwordProp);
+		
+		connectionSortMaps[0]
+				.put(new Integer(passwordProp.getOrder()), passwordMap);
 
 		try {
 			for (int i = 0; i < numPropertiesToSet; i++) {
@@ -1591,7 +1597,16 @@
 				if (orderInCategory == Integer.MIN_VALUE) {
 					sortMaps[1].put(propToGet.getPropertyName(), propToGet);
 				} else {
-					sortMaps[0].put(new Integer(orderInCategory), propToGet);
+					Integer order = new Integer(orderInCategory);
+					
+					Map orderMap = (Map)sortMaps[0].get(order);
+					
+					if (orderMap == null) {
+						orderMap = new TreeMap();
+						sortMaps[0].put(order, orderMap);
+					}
+					
+					orderMap.put(propToGet.getPropertyName(), propToGet);
 				}
 			}
 
@@ -1606,28 +1621,32 @@
 				xmlBuf.append("\">");
 
 				while (orderedIter.hasNext()) {
-					ConnectionProperty propToGet = (ConnectionProperty) orderedIter
-							.next();
+					Iterator orderedAlphaIter = ((Map)orderedIter.next()).values().iterator();
 					
-					xmlBuf.append("\n  <Property name=\"");
-					xmlBuf.append(propToGet.getPropertyName());
-					xmlBuf.append("\" required=\"");
-					xmlBuf.append(propToGet.required ? "Yes" : "No");
-
-					xmlBuf.append("\" default=\"");
-
-					if (propToGet.getDefaultValue() != null) {
-						xmlBuf.append(propToGet.getDefaultValue());
+					while (orderedAlphaIter.hasNext()) {
+						ConnectionProperty propToGet = (ConnectionProperty) orderedAlphaIter
+								.next();
+						
+						xmlBuf.append("\n  <Property name=\"");
+						xmlBuf.append(propToGet.getPropertyName());
+						xmlBuf.append("\" required=\"");
+						xmlBuf.append(propToGet.required ? "Yes" : "No");
+	
+						xmlBuf.append("\" default=\"");
+	
+						if (propToGet.getDefaultValue() != null) {
+							xmlBuf.append(propToGet.getDefaultValue());
+						}
+	
+						xmlBuf.append("\" sortOrder=\"");
+						xmlBuf.append(propToGet.getOrder());
+						xmlBuf.append("\" since=\"");
+						xmlBuf.append(propToGet.sinceVersion);
+						xmlBuf.append("\">\n");
+						xmlBuf.append("    ");
+						xmlBuf.append(propToGet.description);
+						xmlBuf.append("\n  </Property>");
 					}
-
-					xmlBuf.append("\" sortOrder=\"");
-					xmlBuf.append(propToGet.getOrder());
-					xmlBuf.append("\" since=\"");
-					xmlBuf.append(propToGet.sinceVersion);
-					xmlBuf.append("\">\n");
-					xmlBuf.append("    ");
-					xmlBuf.append(propToGet.description);
-					xmlBuf.append("\n  </Property>");
 				}
 
 				while (alphaIter.hasNext()) {

Modified: trunk/connector-j/src/com/mysql/jdbc/ConnectionProperties.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/ConnectionProperties.java	2007-03-26 16:09:00 UTC (rev 6370)
+++ trunk/connector-j/src/com/mysql/jdbc/ConnectionProperties.java	2007-03-27 14:50:30 UTC (rev 6371)
@@ -620,7 +620,7 @@
 	private BooleanConnectionProperty allowMultiQueries = new BooleanConnectionProperty(
 			"allowMultiQueries",
 			false,
-			"Allow the use of ';' to delimit multiple queries during one statement (true/false, defaults to 'false'",
+			"Allow the use of ';' to delimit multiple queries during one statement (true/false), defaults to 'false'",
 			"3.1.1", SECURITY_CATEGORY, 1);
 
 	private BooleanConnectionProperty allowNanAndInf = new BooleanConnectionProperty(
@@ -1622,9 +1622,16 @@
 
 		Map[] connectionSortMaps = (Map[]) propertyListByCategory
 				.get(CONNECTION_AND_AUTH_CATEGORY);
-		connectionSortMaps[0].put(Integer.valueOf(userProp.getOrder()), userProp);
-		connectionSortMaps[0].put(Integer.valueOf(passwordProp.getOrder()),
-				passwordProp);
+		TreeMap userMap = new TreeMap();
+		userMap.put(userProp.getPropertyName(), userProp);
+		
+		connectionSortMaps[0].put(new Integer(userProp.getOrder()), userMap);
+		
+		TreeMap passwordMap = new TreeMap();
+		passwordMap.put(passwordProp.getPropertyName(), passwordProp);
+		
+		connectionSortMaps[0]
+				.put(new Integer(passwordProp.getOrder()), passwordMap);
 
 		try {
 			for (int i = 0; i < numPropertiesToSet; i++) {
@@ -1639,7 +1646,16 @@
 				if (orderInCategory == Integer.MIN_VALUE) {
 					sortMaps[1].put(propToGet.getPropertyName(), propToGet);
 				} else {
-					sortMaps[0].put(Integer.valueOf(orderInCategory), propToGet);
+					Integer order = new Integer(orderInCategory);
+					
+					Map orderMap = (Map)sortMaps[0].get(order);
+					
+					if (orderMap == null) {
+						orderMap = new TreeMap();
+						sortMaps[0].put(order, orderMap);
+					}
+					
+					orderMap.put(propToGet.getPropertyName(), propToGet);
 				}
 			}
 
@@ -1654,28 +1670,32 @@
 				xmlBuf.append("\">");
 
 				while (orderedIter.hasNext()) {
-					ConnectionProperty propToGet = (ConnectionProperty) orderedIter
-							.next();
+					Iterator orderedAlphaIter = ((Map)orderedIter.next()).values().iterator();
 					
-					xmlBuf.append("\n  <Property name=\"");
-					xmlBuf.append(propToGet.getPropertyName());
-					xmlBuf.append("\" required=\"");
-					xmlBuf.append(propToGet.required ? "Yes" : "No");
-
-					xmlBuf.append("\" default=\"");
-
-					if (propToGet.getDefaultValue() != null) {
-						xmlBuf.append(propToGet.getDefaultValue());
+					while (orderedAlphaIter.hasNext()) {
+						ConnectionProperty propToGet = (ConnectionProperty) orderedAlphaIter
+								.next();
+						
+						xmlBuf.append("\n  <Property name=\"");
+						xmlBuf.append(propToGet.getPropertyName());
+						xmlBuf.append("\" required=\"");
+						xmlBuf.append(propToGet.required ? "Yes" : "No");
+	
+						xmlBuf.append("\" default=\"");
+	
+						if (propToGet.getDefaultValue() != null) {
+							xmlBuf.append(propToGet.getDefaultValue());
+						}
+	
+						xmlBuf.append("\" sortOrder=\"");
+						xmlBuf.append(propToGet.getOrder());
+						xmlBuf.append("\" since=\"");
+						xmlBuf.append(propToGet.sinceVersion);
+						xmlBuf.append("\">\n");
+						xmlBuf.append("    ");
+						xmlBuf.append(propToGet.description);
+						xmlBuf.append("\n  </Property>");
 					}
-
-					xmlBuf.append("\" sortOrder=\"");
-					xmlBuf.append(propToGet.getOrder());
-					xmlBuf.append("\" since=\"");
-					xmlBuf.append(propToGet.sinceVersion);
-					xmlBuf.append("\">\n");
-					xmlBuf.append("    ");
-					xmlBuf.append(propToGet.description);
-					xmlBuf.append("\n  </Property>");
 				}
 
 				while (alphaIter.hasNext()) {

Thread
Connector/J commit: r6371 - branches/branch_3_1/connector-j/src/com/mysql/jdbc branches/branch_5_0/connector-j/src/com/mysql/jdbc trunk/connector-j/sr...mmatthews27 Mar