internal void Reset() { GremlinVariable inputVariable = null; if (VariableList.First() is GremlinContextVariable) { inputVariable = VariableList.First(); } PivotVariable = null; Predicates = null; VariableList.Clear(); TableReferences.Clear(); PathList.Clear(); StepList.Clear(); IsPopulateGremlinPath = false; CurrentContextPath = null; ProjectVariablePropertiesList.Clear(); ProjectedProperties.Clear(); //reserve the InputVariable if (inputVariable != null) { VariableList.Add(inputVariable); } }
internal void PopulateColumn(GremlinVariableProperty variableProperty, string alias) { if (ProjectedProperties.Contains(alias)) { return; } ProjectedProperties.Add(alias); ProjectVariablePropertiesList.Add(new Tuple <GremlinVariableProperty, string>(variableProperty, alias)); }
internal void Reset() { PivotVariable = null; Predicates = null; VariableList.Clear(); TableReferences.Clear(); PathList.Clear(); StepList.Clear(); IsPopulateGremlinPath = false; CurrentContextPath = null; ProjectVariablePropertiesList.Clear(); ProjectedProperties.Clear(); }
internal List <WSelectElement> GetSelectElement(List <string> ProjectedProperties) { var selectElements = new List <WSelectElement>(); if ((PivotVariable is GremlinUnionVariable && HomeVariable is GremlinSideEffectVariable) || PivotVariable.GetVariableType() == GremlinVariableType.NULL) { selectElements.Add(SqlUtil.GetSelectScalarExpr(SqlUtil.GetStarColumnReferenceExpr())); return(selectElements); } if (ProjectedProperties != null && ProjectedProperties.Count != 0) { foreach (var projectProperty in ProjectedProperties) { WSelectScalarExpression selectScalarExpr; if (projectProperty == GremlinKeyword.TableDefaultColumnName) { GremlinVariableProperty defaultProjection = PivotVariable.DefaultProjection(); selectScalarExpr = SqlUtil.GetSelectScalarExpr(defaultProjection.ToScalarExpression(), GremlinKeyword.TableDefaultColumnName); selectElements.Add(selectScalarExpr); } else if (ProjectVariablePropertiesList.All(p => p.Item2 != projectProperty)) { if (PivotVariable.ProjectedProperties.Contains(projectProperty)) { WScalarExpression columnExpr = PivotVariable.GetVariableProperty(projectProperty).ToScalarExpression(); selectScalarExpr = SqlUtil.GetSelectScalarExpr(columnExpr, projectProperty); selectElements.Add(selectScalarExpr); } else { selectScalarExpr = SqlUtil.GetSelectScalarExpr(SqlUtil.GetValueExpr(null), projectProperty); selectElements.Add(selectScalarExpr); } } } } else { selectElements.Add(SqlUtil.GetSelectScalarExpr(PivotVariable.DefaultProjection().ToScalarExpression(), GremlinKeyword.TableDefaultColumnName)); } if (IsPopulateGremlinPath) { selectElements.Add(SqlUtil.GetSelectScalarExpr(CurrentContextPath.DefaultProjection().ToScalarExpression(), GremlinKeyword.Path)); } foreach (var item in ProjectVariablePropertiesList) { selectElements.Add(SqlUtil.GetSelectScalarExpr(item.Item1.ToScalarExpression(), item.Item2)); } if (selectElements.Count == 0) { if (PivotVariable is GremlinTableVariable || (PivotVariable is GremlinUnionVariable && HomeVariable is GremlinSideEffectVariable)) { selectElements.Add(SqlUtil.GetSelectScalarExpr(SqlUtil.GetStarColumnReferenceExpr())); } else if (PivotVariable.GetVariableType() == GremlinVariableType.Table) { throw new Exception("Can't process table type"); } else { GremlinVariableProperty defaultProjection = PivotVariable.DefaultProjection(); selectElements.Add(SqlUtil.GetSelectScalarExpr(defaultProjection.ToScalarExpression())); } } return(selectElements); }