Example #1
0
        //public override object AdaptValueToType(object value, DbTypeBase type)
        //{
        //    DateTime mintimestamp = new DateTime(1970, 1, 1, 0, 0, 1);
        //    DateTime maxtimestamp = new DateTime(2038, 1, 9, 3, 14, 7);
        //    if (type is DbTypeDatetime && type.GetSpecificAttribute("mysql", "subtype") == "timestamp" && value is DateTime)
        //    {
        //        DateTime dt = (DateTime)value;
        //        if (dt < mintimestamp) dt = mintimestamp;
        //        if (dt > maxtimestamp) dt = maxtimestamp;
        //    }
        //    return base.AdaptValueToType(value, type);
        //}

        public override string GetSpecificExpression(SqlSpecialConstant specConst, DbTypeBase type, IProgressInfo progress)
        {
            if (type is DbTypeDatetime && type.GetSpecificAttribute("mysql", "subtype") == "timestamp")
            {
                switch (specConst)
                {
                case SqlSpecialConstant.Current_Timestamp:
                case SqlSpecialConstant.Utc_Timestamp:
                    return("CURRENT_TIMESTAMP");
                }
            }
            if (type is DbTypeDatetime && type.GetSpecificAttribute("mysql", "subtype") == "datetime")
            {
                switch (specConst)
                {
                case SqlSpecialConstant.Current_Timestamp:
                case SqlSpecialConstant.Current_Time:
                case SqlSpecialConstant.Current_Date:
                case SqlSpecialConstant.Utc_Timestamp:
                    return("CURRENT_DATETIME");
                    //case SqlSpecialConstant.Current_Time: return "CURRENT_TIME";
                    //case SqlSpecialConstant.Current_Date: return "CURRENT_DATE";
                    //case SqlSpecialConstant.Utc_Timestamp: return "UTC_TIMESTAMP";
                }
            }
            return(null);
        }
Example #2
0
        public override string GetSpecificExpression(SqlSpecialConstant specConst, DbTypeBase type, IProgressInfo progress)
        {
            switch (specConst)
            {
            case SqlSpecialConstant.Current_Timestamp:
            case SqlSpecialConstant.Current_Date:
            case SqlSpecialConstant.Current_Time:
                return("GETDATE()");

            case SqlSpecialConstant.Utc_Timestamp:
                return("GETUTCDATE()");
            }
            return(null);
        }
Example #3
0
 public SpecialConstantSqlExpression(SqlSpecialConstant specConst)
     : base((SymbolPosition)null)
 {
     m_specConst = specConst;
 }
Example #4
0
 public SpecialConstantSqlExpression(SqlSpecialConstant specConst, SymbolPosition original)
     : base(original)
 {
     m_specConst = specConst;
 }
Example #5
0
 public SpecialConstantSqlExpression(XmlElement xml)
     : base(xml)
 {
     m_specConst = (SqlSpecialConstant)Enum.Parse(typeof(SqlSpecialConstant), xml.GetAttribute("constant"), true);
 }
Example #6
0
        //public virtual string Symbols { get { return "()=+-<>*/"; } }

        public virtual string GetSpecificExpression(SqlSpecialConstant specConst, DbTypeBase type, IProgressInfo progress)
        {
            return(null);
        }
Example #7
0
        private SqlExpression ParseExprTerm()
        {
            if (IsSymbol("("))
            {
                return(ParseExprInBracket());
            }
            else
            {
                switch (Current)
                {
                case TokenType.IdentOrKeyword:
                case TokenType.QuotedIdent:
                    var  name         = ParseName();
                    var  ident        = name as SqlIdentifier;
                    bool canbespecial = ident != null && !ident.IsQuoted;

                    if (IsSymbol("("))     // function call
                    {
                        SymbolPosition leftb = CurrentOriginal;
                        NextToken();
                        SqlExpressionList args   = ParseExprList(IsCloseBracket);
                        SymbolPosition    rightb = SkipSymbol(")");
                        if (AllowSpecialConstantReplacement && canbespecial && args.Items.Count == 0)
                        {
                            // maybe it is special function mappable to constant
                            SqlSpecialConstant sc = GetFunctionAsConstant(ident.Identifier);
                            if (sc != SqlSpecialConstant.None)
                            {
                                SymbolPosition pos = new SymbolPosition
                                {
                                    Start    = ident.Original.Start,
                                    Stop     = rightb.Stop,
                                    Original = Tokernizer.SliceProvider,
                                };
                                return(new SpecialConstantSqlExpression(sc, pos));
                            }
                        }
                        return(new SqlFunctionCall(name, leftb, args, rightb));
                    }

                    if (AllowSpecialConstantReplacement && canbespecial)
                    {
                        if (ident.Identifier.ToUpper() == "NULL")
                        {
                            return(new NullSqlExpression(ident.Original));
                        }
                        // maybe it is special constant
                        SqlSpecialConstant sc = GetSymbolAsConstant(ident.Identifier);
                        if (sc != SqlSpecialConstant.None)
                        {
                            return(new SpecialConstantSqlExpression(sc, ident.Original));
                        }
                    }
                    return(name);

                case TokenType.Symbol:
                {
                    var starpos = SkipSymbol("*");
                    return(new SqlStarSymbol(starpos));
                }

                case TokenType.Number:
                {
                    SymbolPosition pos     = CurrentOriginal;
                    string         numdata = CurrentData;
                    NextToken();
                    return(new ConstNumberSqlExpression(Double.Parse(numdata), pos));
                }
                break;

                case TokenType.StringSingle:
                {
                    return(ParseString());
                }
                break;

                default:
                    throw CreateParseError("DAE-00252 Unexpected token:" + Current.ToString());
                    break;
                }
            }
        }
Example #8
0
 public virtual string GetSpecificExpression(SqlSpecialConstant specConst, DbTypeBase type, IProgressInfo progress)
 {
     return(m_dialect.GetSpecificExpression(specConst, type, progress));
 }