[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