public override AlgebraNode VisitJoinAlgebraNode(JoinAlgebraNode node) { base.VisitJoinAlgebraNode(node); if (node.Op == JoinAlgebraNode.JoinOperator.FullOuterJoin) { // TODO: Check if we could represent this join condition by an hash match operator JoinAlgebraNode leftOuterJoinNode = new JoinAlgebraNode(); leftOuterJoinNode.Op = JoinAlgebraNode.JoinOperator.LeftOuterJoin; leftOuterJoinNode.Predicate = (ExpressionNode)node.Predicate.Clone(); leftOuterJoinNode.Left = (AlgebraNode)node.Left.Clone(); leftOuterJoinNode.Right = (AlgebraNode)node.Right.Clone(); leftOuterJoinNode.OutputList = ArrayHelpers.Clone(node.OutputList); List <RowBufferEntry> swappedOutputList = new List <RowBufferEntry>(); swappedOutputList.AddRange(node.Right.OutputList); swappedOutputList.AddRange(node.Left.OutputList); JoinAlgebraNode leftAntiSemiJoinNode = new JoinAlgebraNode(); leftAntiSemiJoinNode.Op = JoinAlgebraNode.JoinOperator.LeftAntiSemiJoin; leftAntiSemiJoinNode.Predicate = (ExpressionNode)node.Predicate.Clone(); leftAntiSemiJoinNode.Left = (AlgebraNode)node.Right.Clone(); leftAntiSemiJoinNode.Right = (AlgebraNode)node.Left.Clone(); leftAntiSemiJoinNode.OutputList = swappedOutputList.ToArray(); List <ComputedValueDefinition> computeScalareDefinedValues = new List <ComputedValueDefinition>(); foreach (RowBufferEntry rowBufferEntry in node.Left.OutputList) { ComputedValueDefinition definedValue = new ComputedValueDefinition(); definedValue.Target = rowBufferEntry; definedValue.Expression = LiteralExpression.FromTypedNull(rowBufferEntry.DataType); computeScalareDefinedValues.Add(definedValue); } ComputeScalarAlgebraNode computeScalarNode = new ComputeScalarAlgebraNode(); computeScalarNode.Input = leftAntiSemiJoinNode; computeScalarNode.DefinedValues = computeScalareDefinedValues.ToArray(); computeScalarNode.OutputList = swappedOutputList.ToArray(); List <UnitedValueDefinition> concatDefinedValues = new List <UnitedValueDefinition>(); for (int i = 0; i < node.OutputList.Length; i++) { RowBufferEntry rowBufferEntry = node.OutputList[i]; UnitedValueDefinition concatDefinedValue = new UnitedValueDefinition(); concatDefinedValue.Target = rowBufferEntry; concatDefinedValue.DependendEntries = new RowBufferEntry[] { node.OutputList[i], node.OutputList[i] }; concatDefinedValues.Add(concatDefinedValue); } ConcatAlgebraNode concatenationNode = new ConcatAlgebraNode(); concatenationNode.Inputs = new AlgebraNode[] { leftOuterJoinNode, computeScalarNode }; concatenationNode.DefinedValues = concatDefinedValues.ToArray(); concatenationNode.OutputList = swappedOutputList.ToArray(); return(concatenationNode); } return(node); }
/// <summary> /// Duplicate the asset. /// </summary> /// <returns>A new asset that contains a duplicate of all action maps and actions in the asset.</returns> /// <remarks> /// Unlike calling <see cref="UnityEngine.Object.Instantiate(UnityEngine.Object)"/>, cloning an asset will not /// duplicate data such as unique <see cref="InputActionMap.id">map IDs</see> and <see cref="InputAction.id">action /// IDs</see>. /// </remarks> public InputActionAsset Clone() { var clone = (InputActionAsset)CreateInstance(GetType()); clone.m_ActionMaps = ArrayHelpers.Clone(m_ActionMaps); return(clone); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { NullScanAlgebraNode result = new NullScanAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { UnitedValueDefinition result = new UnitedValueDefinition(); result.Target = Target; result.DependendEntries = ArrayHelpers.Clone(_dependendEntries); return(result); }
public InputActionAsset Clone() { // Can't MemberwiseClone() ScriptableObject. Unfortunatly, Unity doesn't // prevent the call. Result will be a duplicate wrapper object, though. var clone = (InputActionAsset)CreateInstance(GetType()); clone.m_ActionSets = ArrayHelpers.Clone(m_ActionSets); return(clone); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { ConstantScanAlgebraNode result = new ConstantScanAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.DefinedValues = ArrayHelpers.CreateDeepCopyOfAstElementArray(_definedValues, alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { FilterAlgebraNode result = new FilterAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.Predicate = (ExpressionNode)_predicate.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { StackedTableSpoolAlgebraNode result = new StackedTableSpoolAlgebraNode(); alreadyClonedElements.Add(this, result); result.StatisticsIterator = StatisticsIterator; result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.OutputList = ArrayHelpers.Clone(OutputList); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { ResultAlgebraNode result = new ResultAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.ColumnNames = ArrayHelpers.Clone(_columnNames); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { StackedTableSpoolRefAlgebraNode result = new StackedTableSpoolRefAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.DefinedValues = ArrayHelpers.Clone(_definedValues); result.PrimarySpool = (StackedTableSpoolAlgebraNode)alreadyClonedElements[_primarySpool]; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { AggregateAlgebraNode result = new AggregateAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.Groups = ArrayHelpers.Clone(_groups); result.DefinedValues = ArrayHelpers.CreateDeepCopyOfAstElementArray(_definedValues, alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { TopAlgebraNode result = new TopAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.Limit = _limit; result.TieEntries = ArrayHelpers.Clone(_tieEntries); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { IndexSpoolAlgebraNode result = new IndexSpoolAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.IndexEntry = _indexEntry; result.ProbeExpression = (ExpressionNode)_probeExpression.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { SortAlgebraNode result = new SortAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.Distinct = _distinct; result.SortEntries = ArrayHelpers.Clone(_sortEntries); result.SortOrders = ArrayHelpers.Clone(_sortOrders); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { HashMatchAlgebraNode result = new HashMatchAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Left = (AlgebraNode)_left.Clone(alreadyClonedElements); result.Right = (AlgebraNode)_right.Clone(alreadyClonedElements); result.Op = _op; result.BuildKeyEntry = _buildKeyEntry; result.ProbeEntry = _probeEntry; result.ProbeResidual = (ExpressionNode)_probeResidual.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { JoinAlgebraNode result = new JoinAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Left = (AlgebraNode)_left.Clone(alreadyClonedElements); result.Right = (AlgebraNode)_right.Clone(alreadyClonedElements); result.Op = _op; if (_predicate != null) { result.Predicate = (ExpressionNode)_predicate.Clone(alreadyClonedElements); } result.OuterReferences = ArrayHelpers.Clone(_outerReferences); return(result); }
////REVIEW: right now the Clone() methods aren't overridable; do we want that? public InputActionSet Clone() { // Internal action sets from singleton actions should not be visible outside of // them. Cloning them is not allowed. if (m_SingletonAction != null) { throw new InvalidOperationException( string.Format("Cloning internal set of singleton action '{0}' is not allowed", m_SingletonAction)); } var clone = new InputActionSet { m_Name = m_Name, m_Actions = ArrayHelpers.Clone(m_Actions) }; return(clone); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { SelectQuery result = new SelectQuery(); result.IsDistinct = _isDistinct; if (_topClause != null) { result.TopClause = (TopClause)_topClause.Clone(alreadyClonedElements); } result.SelectColumns = ArrayHelpers.CreateDeepCopyOfAstElementArray(_selectColumns, alreadyClonedElements); if (_tableReferences != null) { result.TableReferences = (TableReference)_tableReferences.Clone(alreadyClonedElements); } if (_whereClause != null) { result.WhereClause = (ExpressionNode)_whereClause.Clone(alreadyClonedElements); } if (_groupByColumns != null) { result.GroupByColumns = ArrayHelpers.CreateDeepCopyOfAstElementArray(_groupByColumns, alreadyClonedElements); } if (_orderByColumns != null) { result.OrderByColumns = ArrayHelpers.CreateDeepCopyOfAstElementArray(_orderByColumns, alreadyClonedElements); } result.AggregateDependencies = ArrayHelpers.CreateDeepCopyOfAstElementArray(_aggregateDependencies, alreadyClonedElements); result.ColumnDependencies = ArrayHelpers.Clone(_columnDependencies); return(result); }