Add error code for SAP Hana
This commit adds a SQLErrorCodes instance for SAP DB, based on a contribution from Andrew Clemons Mostly based on SAP Hana SPS 07 with a few additional codes that are only present is previous versions: * -813 - Cannot connect to host somehost:30115 [Connection refused] * -709 - Unknown host somehost:30115 [somehost], -709.] * -708 - Cannot connect to jdbc:sap://somehost:30115 [Receive of connect failed.] * -11210 - Invalid column index XYZ. Issue: SPR-11770
This commit is contained in:
		
							parent
							
								
									0d22719e06
								
							
						
					
					
						commit
						8614df8bd4
					
				|  | @ -248,4 +248,44 @@ | |||
| 		</property> | ||||
| 	</bean> | ||||
| 
 | ||||
| 	<!-- http://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm --> | ||||
| 	<bean id="Hana" class="org.springframework.jdbc.support.SQLErrorCodes"> | ||||
| 		<property name="databaseProductName"> | ||||
| 			<value>SAP DB</value> | ||||
| 		</property> | ||||
| 		<property name="badSqlGrammarCodes"> | ||||
| 			<value> | ||||
| 				257,259,260,261,262,263,264,267,268,269,270,271,272,273,275,276,277,278, | ||||
| 				278,279,280,281,282,283,284,285,286,288,289,290,294,295,296,297,299,308,309, | ||||
| 				313,315,316,318,319,320,321,322,323,324,328,329,330,333,335,336,337,338,340, | ||||
| 				343,350,351,352,362,368 | ||||
| 			</value> | ||||
| 		</property> | ||||
| 		<property name="permissionDeniedCodes"> | ||||
| 			<value>10,258</value> | ||||
| 		</property> | ||||
| 		<property name="duplicateKeyCodes"> | ||||
| 			<value>301</value> | ||||
| 		</property> | ||||
| 		<property name="dataIntegrityViolationCodes"> | ||||
| 			<value>461,462</value> | ||||
| 		</property> | ||||
| 		<property name="dataAccessResourceFailureCodes"> | ||||
| 			<value>-813,-709,-708,1024,1025,1026,1027,1029,1030,1031</value> | ||||
| 		</property> | ||||
| 		<property name="invalidResultSetAccessCodes"> | ||||
| 			<value>-11210,582,587,588,594</value> | ||||
| 		</property> | ||||
| 		<property name="cannotAcquireLockCodes"> | ||||
| 			<value>131</value> | ||||
| 		</property> | ||||
| 		<property name="cannotSerializeTransactionCodes"> | ||||
| 			<value>138,143</value> | ||||
| 		</property> | ||||
| 		<property name="deadlockLoserCodes"> | ||||
| 			<value>133</value> | ||||
| 		</property> | ||||
| 	</bean> | ||||
| 
 | ||||
| 
 | ||||
| </beans> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
|  * Copyright 2002-2013 the original author or authors. | ||||
|  * Copyright 2002-2014 the original author or authors. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  | @ -36,6 +36,7 @@ import static org.mockito.BDDMockito.*; | |||
|  * | ||||
|  * @author Rod Johnson | ||||
|  * @author Thomas Risberg | ||||
|  * @author Stephane Nicoll | ||||
|  */ | ||||
| public class SQLErrorCodesFactoryTests { | ||||
| 
 | ||||
|  | @ -120,6 +121,22 @@ public class SQLErrorCodesFactoryTests { | |||
| 		assertTrue(Arrays.binarySearch(sec.getBadSqlGrammarCodes(), "-204") >= 0); | ||||
| 	} | ||||
| 
 | ||||
| 	private void assertIsHana(SQLErrorCodes sec) { | ||||
| 		assertTrue(sec.getBadSqlGrammarCodes().length > 0); | ||||
| 		assertTrue(sec.getDataIntegrityViolationCodes().length > 0); | ||||
| 
 | ||||
| 		assertTrue(Arrays.binarySearch(sec.getBadSqlGrammarCodes(), "368") >= 0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getPermissionDeniedCodes(), "10") >= 0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getDuplicateKeyCodes(), "301") >= 0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getDataIntegrityViolationCodes(), "461") >= 0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getDataAccessResourceFailureCodes(), "-813") >=0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getInvalidResultSetAccessCodes(), "582") >=0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getCannotAcquireLockCodes(), "131") >= 0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getCannotSerializeTransactionCodes(), "138") >= 0); | ||||
| 		assertTrue(Arrays.binarySearch(sec.getDeadlockLoserCodes(), "133") >= 0); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void testLookupOrder() { | ||||
| 		class TestSQLErrorCodesFactory extends SQLErrorCodesFactory { | ||||
|  | @ -297,6 +314,12 @@ public class SQLErrorCodesFactoryTests { | |||
| 		assertIsEmpty(sec); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void testHanaIsRecognizedFromMetadata() throws Exception { | ||||
| 		SQLErrorCodes sec = getErrorCodesFromDataSource("SAP DB", null); | ||||
| 		assertIsHana(sec); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Check that wild card database name works. | ||||
| 	 */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue