[teiid-commits] teiid SVN: r912 - in trunk/engine/src: main/java/com/metamatrix/query/processor/proc and 4 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon May 11 23:17:43 EDT 2009


Author: shawkins
Date: 2009-05-11 23:17:43 -0400 (Mon, 11 May 2009)
New Revision: 912

Modified:
   trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlaceAccess.java
   trunk/engine/src/main/java/com/metamatrix/query/processor/proc/ExecDynamicSqlInstruction.java
   trunk/engine/src/main/java/com/metamatrix/query/rewriter/VariableSubstitutionVisitor.java
   trunk/engine/src/main/java/com/metamatrix/query/sql/lang/Command.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
   trunk/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java
Log:
TEIID-574 removing the use of variable values on commands

Modified: trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlaceAccess.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlaceAccess.java	2009-05-11 22:00:47 UTC (rev 911)
+++ trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlaceAccess.java	2009-05-12 03:17:43 UTC (rev 912)
@@ -307,28 +307,6 @@
         if (patternElements == null) {
             return false;
         }
-        Command command = (Command)node.getProperty(NodeConstants.Info.NESTED_COMMAND);
-
-        // check for input values that have been set by the resolver
-        if (command != null) {
-            Map values = command.getVariableValues();
-
-            if (values != null) {
-                List ids = new LinkedList();
-                for (Iterator i = values.keySet().iterator(); i.hasNext();) {
-                    String elementName = (String)i.next();
-                    Object id = metadata.getElementID(elementName);
-                    ids.add(id);
-                }
-
-                List elements = ResolverUtil.resolveElements(command.getVirtualGroup(), metadata, ids);
-
-                if (RulePushSelectCriteria.satisfyAccessPatterns(patternElements, elements)) {
-                    return false;
-                }
-            }
-        }
-
         Collections.sort(patternElements);
         node.setProperty(NodeConstants.Info.ACCESS_PATTERNS, patternElements);
         return true;

Modified: trunk/engine/src/main/java/com/metamatrix/query/processor/proc/ExecDynamicSqlInstruction.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/processor/proc/ExecDynamicSqlInstruction.java	2009-05-11 22:00:47 UTC (rev 911)
+++ trunk/engine/src/main/java/com/metamatrix/query/processor/proc/ExecDynamicSqlInstruction.java	2009-05-12 03:17:43 UTC (rev 912)
@@ -162,7 +162,6 @@
 			Command command = QueryParser.getQueryParser().parseCommand(value.toString());
 			command.setExternalGroupContexts(dynamicCommand.getExternalGroupContexts());
 			command.setTemporaryMetadata(dynamicCommand.getTemporaryMetadata());
-            command.setVariableValues(new HashMap(dynamicCommand.getVariableValues()));
 			updateContextWithUsingValues(procEnv, localContext);
 			
 			Map tempMetadata = command.getTemporaryMetadata();
@@ -188,11 +187,10 @@
 
 			// create a new set of variables including vars
 			Map nameValueMap = createVariableValuesMap(localContext);
-			command.getVariableValues().putAll(nameValueMap);
-            
+            nameValueMap.putAll(QueryResolver.getVariableValues(parentProcCommand.getUserCommand(), metadata));
             // validation visitor?
 
-            VariableSubstitutionVisitor.substituteVariables(command, command.getVariableValues(), command.getType());
+            VariableSubstitutionVisitor.substituteVariables(command, nameValueMap, command.getType());
             
 			QueryRewriter.rewrite(command, parentProcCommand, metadata,
 					procEnv.getContext());
@@ -352,7 +350,6 @@
 					.getCanonicalName(), new Constant(entry.getValue()));
 		}
 
-		nameValueMap.putAll(dynamicCommand.getVariableValues());
 		return nameValueMap;
 	}
 

Modified: trunk/engine/src/main/java/com/metamatrix/query/rewriter/VariableSubstitutionVisitor.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/rewriter/VariableSubstitutionVisitor.java	2009-05-11 22:00:47 UTC (rev 911)
+++ trunk/engine/src/main/java/com/metamatrix/query/rewriter/VariableSubstitutionVisitor.java	2009-05-12 03:17:43 UTC (rev 912)
@@ -84,21 +84,6 @@
         this.commandType = commandType;
 	}
 
-	// ############### Visitor methods for language objects ##################
-    
-	public void visit(Insert obj) {
-	    super.visit(obj);
-        obj.getVariableValues().putAll(getVariableValues());
-	}
-
-    /** 
-     * @see com.metamatrix.query.sql.LanguageVisitor#visit(com.metamatrix.query.sql.lang.DynamicCommand)
-     */
-    public void visit(DynamicCommand obj) {
-        super.visit(obj);
-        obj.getVariableValues().putAll(getVariableValues());
-    }
-    
     public void visit(XQuery obj) {
         obj.getCompiledXQuery().setParameters(getVariableValues());
     }
@@ -117,21 +102,8 @@
             }
         }
         obj.setChangeList(newChangeList);
-        obj.getVariableValues().putAll(getVariableValues());
     }
     
-    public void visit(SetQuery obj) {
-        obj.getVariableValues().putAll(getVariableValues());
-    }
-    
-    public void visit(Query obj) {
-        obj.getVariableValues().putAll(getVariableValues());
-    }
-    
-    public void visit(Delete obj) {
-        obj.getVariableValues().putAll(getVariableValues());
-    }
-    
     /**
      * Checks variables in an expression, if the variables are INPUT variables and if
      * none of them are changing, then this method returns a false, if all of them

Modified: trunk/engine/src/main/java/com/metamatrix/query/sql/lang/Command.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/sql/lang/Command.java	2009-05-11 22:00:47 UTC (rev 911)
+++ trunk/engine/src/main/java/com/metamatrix/query/sql/lang/Command.java	2009-05-12 03:17:43 UTC (rev 912)
@@ -107,10 +107,8 @@
     
     public static final int TYPE_DROP = 12;
 
-    private static List updateCommandSymbol = null;
+    private static List updateCommandSymbol;
     
-    private static List updatesCommandSymbol = null;
-    
     /**
      * All temporary group IDs discovered while resolving this 
      * command.  The key is a TempMetadataID and the value is an 
@@ -118,18 +116,12 @@
      */
     protected Map tempGroupIDs;
     
-    private transient GroupContext externalGroups = null;
+    private transient GroupContext externalGroups;
 
-    private boolean isResolved = false;
+    private boolean isResolved;
     
     private GroupSymbol virtualGroup;
     
-    /**
-     * holds variable values found during resolution until they can be used during processing
-     */ 
-    private Map variableValues = new HashMap();
-
-	
 	/** The option clause */
 	private Option option;
 	
@@ -238,10 +230,6 @@
         }
         copy.setVirtualGroup(getVirtualGroup());
         
-        if (variableValues != null) {
-            copy.setVariableValues(new HashMap(variableValues));
-        }
-        
         copy.setIsResolved(this.isResolved());
         copy.plan = this.plan;
         if (this.correlatedReferences != null) {
@@ -326,15 +314,6 @@
         return updateCommandSymbol;
     }
     
-    public static List getUpdatesCommandSymbol() {
-        if (updatesCommandSymbol == null ) {
-            ElementSymbol symbol = new ElementSymbol("Counts"); //$NON-NLS-1$
-            symbol.setType(int[].class);
-            updatesCommandSymbol = Arrays.asList(new ElementSymbol[] {symbol});
-        }
-        return updatesCommandSymbol;
-    }
-    
     /**
      * Return the number of updates on physical sources by this command. 
      * @param metadata QueryMetadataInterface
@@ -370,14 +349,6 @@
         this.virtualGroup = virtualGroup;
     }
     
-    public Map getVariableValues() {
-        return variableValues;
-    }
-
-    public void setVariableValues(Map parameters) {
-        this.variableValues = parameters;
-    }
-    
     public ProcessorPlan getProcessorPlan() {
     	return this.plan;
     }

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java	2009-05-11 22:00:47 UTC (rev 911)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java	2009-05-12 03:17:43 UTC (rev 912)
@@ -24,7 +24,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -311,13 +310,9 @@
         }
     	//ensure that the user command is distinct from the processing command
         //rewrite and planning may alter options, symbols, etc.
-        
-        //TODO clone after the resolve - but that doesn't currently work for exec resolving
-    	this.userCommand = (Command)command.clone();
-    	
-    	QueryResolver.resolveCommand(this.userCommand, Collections.emptyMap(), false, metadata, analysisRecord);
-    	
     	QueryResolver.resolveCommand(command, metadata, analysisRecord);
+    	
+    	this.userCommand = (Command)command.clone();
     }
         
     private void validateQuery(Command command, boolean validateVisibility)

Modified: trunk/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java	2009-05-11 22:00:47 UTC (rev 911)
+++ trunk/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java	2009-05-12 03:17:43 UTC (rev 912)
@@ -1321,15 +1321,15 @@
         helpTestProcess(plan, expected, dataMgr);
     }
 
-    //procedure with Has Criteria and Translate Criteria 
+    //procedure with Has Criteria and Translate Criteria and changing
     public void testDynamicCommandWithTranslate() throws Exception {
         String procedure = "CREATE PROCEDURE  "; //$NON-NLS-1$
         procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
         procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
         procedure = procedure + "IF(HAS CRITERIA ON (vm1.g4.e2))\n"; //$NON-NLS-1$
         procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
-        procedure = procedure + "execute string 'Select pm1.g1.e2 from pm1.g1 where TRANSLATE = CRITERIA ON (vm1.g4.e2)' as x integer into #temp;\n"; //$NON-NLS-1$
-        procedure = procedure + "var1 = select * from #temp;\n"; //$NON-NLS-1$
+        procedure = procedure + "execute string 'Select pm1.g1.e2 x, changing.e1 y from pm1.g1 where TRANSLATE = CRITERIA ON (vm1.g4.e2)' as x integer, y boolean into #temp;\n"; //$NON-NLS-1$
+        procedure = procedure + "var1 = select x from #temp;\n"; //$NON-NLS-1$
         procedure = procedure + "END\n";		 //$NON-NLS-1$
         procedure = procedure + "if(var1 = 5)\n"; //$NON-NLS-1$
         procedure = procedure + "BEGIN\n";		 //$NON-NLS-1$




More information about the teiid-commits mailing list