[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