[teiid-commits] teiid SVN: r4101 - in branches/7.7.x: engine/src/main/java/org/teiid/dqp/internal/process and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon May 14 00:47:44 EDT 2012


Author: shawkins
Date: 2012-05-14 00:47:44 -0400 (Mon, 14 May 2012)
New Revision: 4101

Modified:
   branches/7.7.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java
   branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
   branches/7.7.x/engine/src/main/java/org/teiid/query/analysis/AnalysisRecord.java
Log:
TEIID-2042 limiting debug plan size

Modified: branches/7.7.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java
===================================================================
--- branches/7.7.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2012-05-14 04:47:40 UTC (rev 4100)
+++ branches/7.7.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2012-05-14 04:47:44 UTC (rev 4101)
@@ -487,11 +487,17 @@
         		if (show.equalsIgnoreCase("PLAN")) { //$NON-NLS-1$
         			List<ArrayList<Object>> records = new ArrayList<ArrayList<Object>>(1);
         			PlanNode plan = driverConnection.getCurrentPlanDescription();
-        			if (plan != null) {
+        			String connDebugLog = driverConnection.getDebugLog();
+        			if (plan != null || connDebugLog != null) {
         				ArrayList<Object> row = new ArrayList<Object>(3);
-            			row.add(DataTypeTransformer.getClob(plan.toString()));
-        				row.add(new SQLXMLImpl(plan.toXml()));
-        				row.add(DataTypeTransformer.getClob(driverConnection.getDebugLog()));
+        				if (plan != null) {
+	            			row.add(DataTypeTransformer.getClob(plan.toString()));
+	        				row.add(new SQLXMLImpl(plan.toXml()));
+        				} else {
+        					row.add(null);
+        					row.add(null);
+        				}
+        				row.add(DataTypeTransformer.getClob(connDebugLog));
         				records.add(row);
         			}
         			createResultSet(records, new String[] {"PLAN_TEXT", "PLAN_XML", "DEBUG_LOG"}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

Modified: branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2012-05-14 04:47:40 UTC (rev 4100)
+++ branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2012-05-14 04:47:44 UTC (rev 4101)
@@ -516,7 +516,11 @@
 				}
 			}
 		}
-		request.processRequest();
+		try {
+			request.processRequest();
+		} finally {
+			analysisRecord = request.analysisRecord;
+		}
 		originalCommand = request.userCommand;
         if (cachable && (requestMsg.useResultSetCache() || originalCommand.getCacheHint() != null) && rsCache != null && originalCommand.areResultsCachable()) {
         	this.cid = cacheId;
@@ -566,7 +570,6 @@
 			//This is just a dummy result it will get replaced by collector source
 	    	resultsBuffer = this.processor.getBufferManager().createTupleBuffer(this.originalCommand.getProjectedSymbols(), this.request.context.getConnectionID(), TupleSourceType.FINAL);
 		}
-		analysisRecord = request.analysisRecord;
 		transactionContext = request.transactionContext;
 		if (this.transactionContext != null && this.transactionContext.getTransactionType() != Scope.NONE) {
 			this.transactionState = TransactionState.ACTIVE;

Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/analysis/AnalysisRecord.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/analysis/AnalysisRecord.java	2012-05-14 04:47:40 UTC (rev 4100)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/analysis/AnalysisRecord.java	2012-05-14 04:47:44 UTC (rev 4101)
@@ -33,6 +33,7 @@
 import org.teiid.client.plan.Annotation;
 import org.teiid.client.plan.PlanNode;
 import org.teiid.core.types.DataTypeManager;
+import org.teiid.core.util.PropertiesUtils;
 import org.teiid.logging.LogConstants;
 import org.teiid.logging.LogManager;
 import org.teiid.logging.MessageLevel;
@@ -54,7 +55,9 @@
  */
 public class AnalysisRecord {
 	
-    // Common 
+    private static final int MAX_PLAN_LENGTH = PropertiesUtils.getIntProperty(System.getProperties(), "org.teiid.maxPlanLength", 1<<25); //$NON-NLS-1$
+
+	// Common 
     public static final String PROP_OUTPUT_COLS = "Output Columns"; //$NON-NLS-1$
     
     // Relational
@@ -178,6 +181,9 @@
      * @param debugLine Text to add to debug writer
      */
     public void println(String debugLine) {
+    	if (this.stringWriter.getBuffer().length() > MAX_PLAN_LENGTH) {
+    		this.stringWriter.getBuffer().delete(0, this.stringWriter.getBuffer().length() - (MAX_PLAN_LENGTH*3/4));
+    	}
         this.debugWriter.println(debugLine);
     }
     



More information about the teiid-commits mailing list