[teiid-commits] teiid SVN: r3133 - in trunk: runtime/src/main/java/org/teiid/odbc and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Fri Apr 29 14:34:21 EDT 2011


Author: rareddy
Date: 2011-04-29 14:34:21 -0400 (Fri, 29 Apr 2011)
New Revision: 3133

Modified:
   trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java
   trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java
   trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java
   trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java
Log:
TEIID-1572: Adding suport for SET and SHOW command in ODBC.

Modified: trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2011-04-29 18:34:21 UTC (rev 3133)
@@ -163,7 +163,7 @@
     protected Map outParamIndexMap = new HashMap();
     
     private static Pattern TRANSACTION_STATEMENT = Pattern.compile("\\s*(commit|rollback|(start\\s*transaction))\\s*;?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
-    private static Pattern SET_STATEMENT = Pattern.compile("\\s*set\\s*(\\w+)\\s*(\\w*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
+    private static Pattern SET_STATEMENT = Pattern.compile("\\s*set\\s*(\\w+)\\s*([^;]*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
     private static Pattern SHOW_STATEMENT = Pattern.compile("\\s*show\\s*(\\w*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
     /**
      * Factory Constructor 

Modified: trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java	2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java	2011-04-29 18:34:21 UTC (rev 3133)
@@ -25,7 +25,9 @@
 import java.io.StringReader;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.Collections;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -179,6 +181,13 @@
 			info.put("password", password); //$NON-NLS-1$
 			this.connection =  (ConnectionImpl)driver.connect(url, info);
 			int hash = this.connection.getConnectionId().hashCode();
+			Enumeration keys = this.props.propertyNames();
+			while (keys.hasMoreElements()) {
+				String key = (String)keys.nextElement();
+				Statement stmt = this.connection.createStatement();
+				stmt.execute("SET " + key + " '" + this.props.getProperty(key) + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				stmt.close();
+			}
 			this.client.authenticationSucess(hash, hash);
 			ready();
 		} catch (SQLException e) {
@@ -674,8 +683,15 @@
 			        			try {
 			        				ResultsFuture<Void> result = null;
 					                if (future.get()) {
-					                	result = new ResultsFuture<Void>();
-			                            client.sendResults(sql, stmt.getResultSet(), result, true);
+					                	if (stmt.getResultSet() != null) {
+						                	result = new ResultsFuture<Void>();
+				                            client.sendResults(sql, stmt.getResultSet(), result, true);
+					                	}
+					                	else {
+					                		// handles the "SET" commands.
+						                	result = ResultsFuture.NULL_FUTURE;
+						                	client.sendUpdateCount(sql, 0);
+					                	}					                	
 					                } else {
 					                	result = ResultsFuture.NULL_FUTURE;
 					                	client.sendUpdateCount(sql, stmt.getUpdateCount());

Modified: trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java	2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java	2011-04-29 18:34:21 UTC (rev 3133)
@@ -417,7 +417,9 @@
 			tag = "COMMIT";
 		} else if (sql.startsWith("ROLLBACK")) {
 			tag = "ROLLBACK";
-		} else {
+		} else if (sql.startsWith("SET ")) {
+			tag = "SET";
+		}else {
 			trace("Check command tag:", sql);
 			tag = "UPDATE " + updateCount;
 		}

Modified: trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java	2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java	2011-04-29 18:34:21 UTC (rev 3133)
@@ -31,6 +31,7 @@
 import java.lang.reflect.Proxy;
 import java.nio.charset.Charset;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Properties;
 
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -209,6 +210,10 @@
         this.user = props.getProperty("user");
         this.databaseName = props.getProperty("database");
         String clientEncoding = props.getProperty("client_encoding", "UTF-8");
+        props.setProperty("client_encoding", clientEncoding);
+        props.setProperty("default_transaction_isolation", "read committed");
+        props.setProperty("DateStyle", "ISO");
+        props.setProperty("TimeZone", Calendar.getInstance().getTimeZone().getDisplayName());
         Charset cs = PGCharsetConverter.getCharset(clientEncoding);
         if (cs != null) {
         	this.encoding = cs;



More information about the teiid-commits mailing list