Exemple #1
0
            public void Push(ExpressionDef def)
            {
                if (def == null)
                {
                    throw new ArgumentNullException("def");
                }

                if (_stack.Contains(def.Name))
                {
                    throw new InvalidOperationException(String.Format("Reference to expression {0} is invalid because it results in a circular reference.", def.Name));
                }

                _stack.Push(def.Name);
            }
Exemple #2
0
        private CREFModel.NamedExpression TranslateNamedExpression(TranslationContext context, ExpressionDef expression)
        {
            var result = new CREFModel.NamedExpression();

            result.Name = expression.Name;
            result.Item = context.TranslateNode(expression.Expression);

            return(result);
        }
 public Trigger() {
     this.defField = new ExpressionDef();
 }
        private Model.Statement TranslateExpressionDef(SQLTranslationContext context, string artifactName, ExpressionDef expressionDef)
        {
            var result = new SQLModel.CreateViewStatement();

            result.ViewName = context.GetExpressionObjectName(String.Format("{0}.{1}", artifactName, expressionDef.Name));
            var translatedExpression = context.TranslateNode(expressionDef.Expression);

            if (DataTypes.Equal(expressionDef.Expression.ResultType, DataTypes.Boolean))
            {
                translatedExpression = SQLTranslationUtilities.PromoteBooleanValuedExpression(translatedExpression);
            }

            result.Expression = SQLTranslationUtilities.EnsureSelectExpression(translatedExpression);
            return(result);
        }