[teiid-commits] teiid SVN: r3041 - in trunk: test-integration/common/src/test/java/org/teiid/transport and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Fri Mar 25 21:12:48 EDT 2011


Author: shawkins
Date: 2011-03-25 21:12:47 -0400 (Fri, 25 Mar 2011)
New Revision: 3041

Added:
   trunk/test-integration/common/src/test/resources/TestODBCSocketTransport/testPk.expected
Modified:
   trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java
   trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java
Log:
TEIID-1530 correcting the previous checkin.  the quotes are already part of the extracted strings

Modified: trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java	2011-03-25 21:03:56 UTC (rev 3040)
+++ trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java	2011-03-26 01:12:47 UTC (rev 3041)
@@ -330,18 +330,18 @@
 					modified = new StringBuffer("SELECT k.Name AS attname, convert(Position, short) AS attnum, TableName AS relname, SchemaName AS nspname, TableName AS relname") //$NON-NLS-1$
 				          .append(" FROM SYS.KeyColumns k") //$NON-NLS-1$ 
 				          .append(" WHERE ") //$NON-NLS-1$
-				          .append(" UCASE(SchemaName)").append(" LIKE UCASE('").append(m.group(2)).append("')")//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				          .append(" AND UCASE(TableName)") .append(" LIKE UCASE('").append(m.group(1)).append("')")//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				          .append(" UCASE(SchemaName)").append(" LIKE UCASE(").append(m.group(2)).append(")")//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				          .append(" AND UCASE(TableName)") .append(" LIKE UCASE(").append(m.group(1)).append(")")//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 				          .append(" AND KeyType LIKE 'Primary'") //$NON-NLS-1$
 				          .append(" ORDER BY attnum").toString(); //$NON-NLS-1$					
 				}
 				else if ((m = pkKeyPattern.matcher(modified)).matches()) {
 					String tableName = m.group(1);
-					if (tableName.endsWith("_pkey")) { //$NON-NLS-1$
-						tableName = tableName.substring(0, tableName.length()-5);
+					if (tableName.endsWith("_pkey'")) { //$NON-NLS-1$
+						tableName = tableName.substring(0, tableName.length()-6) + '\'';
 						modified = "select ia.attname, ia.attnum, ic.relname, n.nspname, NULL "+ //$NON-NLS-1$	
 							"from pg_catalog.pg_attribute ia, pg_catalog.pg_class ic, pg_catalog.pg_namespace n, Sys.KeyColumns kc "+ //$NON-NLS-1$	
-							"where ic.relname = '"+tableName+"' AND n.nspname = '"+m.group(2)+"' AND "+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+							"where ic.relname = "+tableName+" AND n.nspname = "+m.group(2)+" AND "+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 							"n.oid = ic.relnamespace AND ia.attrelid = ic.oid AND kc.SchemaName = n.nspname " +//$NON-NLS-1$	
 							"AND kc.TableName = ic.relname AND kc.KeyType = 'Primary' AND kc.Name = ia.attname order by ia.attnum";//$NON-NLS-1$	
 					}
@@ -353,7 +353,7 @@
 				else if ((m = fkPattern.matcher(modified)).matches()){
 					modified = "SELECT PKTABLE_CAT, PKTABLE_SCHEM, PKTABLE_NAME, PKCOLUMN_NAME, FKTABLE_CAT, FKTABLE_SCHEM, "+//$NON-NLS-1$
 								"FKTABLE_NAME, FKCOLUMN_NAME, KEY_SEQ, UPDATE_RULE, DELETE_RULE, FK_NAME, PK_NAME, DEFERRABILITY "+//$NON-NLS-1$
-								"FROM SYS.ReferenceKeyColumns WHERE PKTABLE_NAME LIKE '"+m.group(14)+"' and PKTABLE_SCHEM LIKE '"+m.group(15)+"'";//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+								"FROM SYS.ReferenceKeyColumns WHERE PKTABLE_NAME LIKE "+m.group(14)+" and PKTABLE_SCHEM LIKE "+m.group(15);//$NON-NLS-1$ //$NON-NLS-2$ 
 				}
 				else if (modified.equalsIgnoreCase("select version()")) { //$NON-NLS-1$
 					modified = "SELECT 'Teiid "+ApplicationInfo.getInstance().getReleaseNumber()+"'"; //$NON-NLS-1$ //$NON-NLS-2$
@@ -368,11 +368,6 @@
 					modified = "SELECT 1 from matpg_relatt where attrelid = ? and attnum = ? and autoinc = true"; //$NON-NLS-1$
 				}
 				else {
-					//these are somewhat dangerous
-					modified = modified.replaceAll("E'", "'"); //$NON-NLS-1$ //$NON-NLS-2$
-					modified =  modified.replaceAll("::[A-Za-z0-9]*", " "); //$NON-NLS-1$ //$NON-NLS-2$
-					modified =  modified.replaceAll("'pg_toast'", "'SYS'"); //$NON-NLS-1$ //$NON-NLS-2$
-					
 					// since teiid can work with multiple schemas at a given time
 					// this call resolution is ambiguous
 					if (sql.equalsIgnoreCase("select current_schema()")) { //$NON-NLS-1$
@@ -406,6 +401,11 @@
 					modified = "SELECT 'DEALLOCATE'"; //$NON-NLS-1$
 				}					
 			}
+			//these are somewhat dangerous
+			modified = modified.replaceAll("E('[^']*')+", "unescape($1)"); //$NON-NLS-1$ //$NON-NLS-2$
+			modified =  modified.replaceAll("::[A-Za-z0-9]*", " "); //$NON-NLS-1$ //$NON-NLS-2$
+			modified =  modified.replaceAll("'pg_toast'", "'SYS'"); //$NON-NLS-1$ //$NON-NLS-2$
+
 			if (modified != null && !modified.equalsIgnoreCase(sql)) {
 				LogManager.logDetail(LogConstants.CTX_ODBC, "Modified Query:"+modified); //$NON-NLS-1$
 			}			

Modified: trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java	2011-03-25 21:03:56 UTC (rev 3040)
+++ trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java	2011-03-26 01:12:47 UTC (rev 3041)
@@ -123,4 +123,19 @@
 		assertTrue(s.execute("select * from tables order by name"));
 		conn.setAutoCommit(true);
 	}
+	
+	@Test public void testPk() throws Exception {
+		Statement stmt = conn.createStatement();
+		ResultSet rs = stmt.executeQuery("select ta.attname, ia.attnum, ic.relname, n.nspname, tc.relname " +//$NON-NLS-1$
+			"from pg_catalog.pg_attribute ta, pg_catalog.pg_attribute ia, pg_catalog.pg_class tc, pg_catalog.pg_index i, " +//$NON-NLS-1$
+			"pg_catalog.pg_namespace n, pg_catalog.pg_class ic where tc.relname = E'pg_attribute' AND n.nspname = E'pg_catalog'");
+		TestMMDatabaseMetaData.compareResultSet(rs);
+	}
+	
+	@Test public void testEscapedLiteral() throws Exception {
+		Statement stmt = conn.createStatement();
+		ResultSet rs = stmt.executeQuery("select E'\\n\\thello pg'");
+		assertTrue(rs.next());
+		assertEquals("\n\thello pg", rs.getString(1));
+	}
 }

Added: trunk/test-integration/common/src/test/resources/TestODBCSocketTransport/testPk.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestODBCSocketTransport/testPk.expected	                        (rev 0)
+++ trunk/test-integration/common/src/test/resources/TestODBCSocketTransport/testPk.expected	2011-03-26 01:12:47 UTC (rev 3041)
@@ -0,0 +1,10 @@
+varchar                                                            int2    varchar                                                            varchar                                                            varchar                                                          
+name                                                               attnum  tablename                                                          schemaname                                                         tablename                                                        
+oid                                                                1       pg_attribute                                                       pg_catalog                                                         pg_attribute                                                     
+Row Count : 1
+getColumnName  getColumnType  getCatalogName  getColumnClassName  getColumnLabel  getColumnTypeName  getSchemaName  getTableName  getColumnDisplaySize  getPrecision  getScale  isAutoIncrement  isCaseSensitive  isCurrency  isDefinitelyWritable  isNullable  isReadOnly  isSearchable  isSigned  isWritable  
+name           12                             java.lang.String    name            varchar                                         2147483647            0             0         false            true             false       false                 0           false       true          false     true        
+attnum         5                              java.lang.Integer   attnum          int2                                            6                     5             0         false            false            false       false                 2           false       true          true      true        
+tablename      12                             java.lang.String    tablename       varchar                                         2147483647            0             0         false            true             false       false                 0           false       true          false     true        
+schemaname     12                             java.lang.String    schemaname      varchar                                         2147483647            0             0         false            true             false       false                 1           false       true          false     true        
+tablename      12                             java.lang.String    tablename       varchar                                         2147483647            0             0         false            true             false       false                 0           false       true          false     true        



More information about the teiid-commits mailing list