//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); }
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); }
public SpecialConstantSqlExpression(SqlSpecialConstant specConst) : base((SymbolPosition)null) { m_specConst = specConst; }
public SpecialConstantSqlExpression(SqlSpecialConstant specConst, SymbolPosition original) : base(original) { m_specConst = specConst; }
public SpecialConstantSqlExpression(XmlElement xml) : base(xml) { m_specConst = (SqlSpecialConstant)Enum.Parse(typeof(SqlSpecialConstant), xml.GetAttribute("constant"), true); }
//public virtual string Symbols { get { return "()=+-<>*/"; } } public virtual string GetSpecificExpression(SqlSpecialConstant specConst, DbTypeBase type, IProgressInfo progress) { return(null); }
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; } } }
public virtual string GetSpecificExpression(SqlSpecialConstant specConst, DbTypeBase type, IProgressInfo progress) { return(m_dialect.GetSpecificExpression(specConst, type, progress)); }