public override WTableReference ToTableReference()
        {
            List <WScalarExpression> parameters = new List <WScalarExpression>();

            parameters.Add(InputVariable.GetDefaultProjection().ToScalarExpression());
            parameters.Add(SqlUtil.GetValueExpr(Column == GremlinKeyword.Column.Keys ? "Keys" : "Values"));
            var tableRef = SqlUtil.GetFunctionTableReference(GremlinKeyword.func.SelectColumn, parameters, GetVariableName());

            return(SqlUtil.GetCrossApplyTableReference(tableRef));
        }
Пример #2
0
        public override WTableReference ToTableReference()
        {
            List <WScalarExpression> parameters  = new List <WScalarExpression>();
            List <WSelectQueryBlock> queryBlocks = new List <WSelectQueryBlock>();

            //Must toSelectQueryBlock before toCompose1 of variableList in order to populate needed columns
            foreach (var byContext in ByContexts)
            {
                queryBlocks.Add(byContext.ToSelectQueryBlock(true));
            }

            parameters.Add(InputVariable.GetDefaultProjection().ToScalarExpression());
            parameters.Add(PathVariable.GetDefaultProjection().ToScalarExpression());
            switch (Pop)
            {
            case GremlinKeyword.Pop.All:
                parameters.Add(SqlUtil.GetValueExpr("All"));
                break;

            case GremlinKeyword.Pop.First:
                parameters.Add(SqlUtil.GetValueExpr("First"));
                break;

            case GremlinKeyword.Pop.Last:
                parameters.Add(SqlUtil.GetValueExpr("Last"));
                break;
            }

            foreach (var selectKey in SelectKeys)
            {
                parameters.Add(SqlUtil.GetValueExpr(selectKey));
            }

            foreach (var block in queryBlocks)
            {
                parameters.Add(SqlUtil.GetScalarSubquery(block));
            }

            if (SelectKeys.Count == 1)
            {
                foreach (var projectProperty in ProjectedProperties)
                {
                    parameters.Add(SqlUtil.GetValueExpr(projectProperty));
                }
            }

            var tableRef = SqlUtil.GetFunctionTableReference(
                SelectKeys.Count == 1 ? GremlinKeyword.func.SelectOne: GremlinKeyword.func.Select,
                parameters, GetVariableName());

            return(SqlUtil.GetCrossApplyTableReference(tableRef));
        }
Пример #3
0
 private WSelectQueryBlock GetSelectQueryBlock(GremlinToSqlContext context)
 {
     if (context == null)
     {
         var queryBlock = new WSelectQueryBlock();
         queryBlock.SelectElements.Add(SqlUtil.GetSelectScalarExpr(InputVariable.GetDefaultProjection().ToScalarExpression()));
         return(queryBlock);
     }
     else
     {
         return(context.ToSelectQueryBlock());
     }
 }