public override DbTypeBase ToGenericType() { DbTypeFloat res = new DbTypeFloat(); res.Bytes = 8; return(res); }
protected override DbTypeBase ToGenericTypeNoArray() { DbTypeFloat res = new DbTypeFloat(); res.Bytes = 8; return(res); }
public override ISpecificType GenericTypeToSpecific(DbTypeBase type, IMigrationProfile profile, IProgressInfo progress) { switch (type.Code) { case DbTypeCode.Int: return(GetAccessTypeInt((DbTypeInt)type)); case DbTypeCode.String: return(GetAccessTypeString((DbTypeString)type)); case DbTypeCode.Logical: return(new AccessTypeBit()); case DbTypeCode.Datetime: return(new AccessTypeDatetime()); case DbTypeCode.Numeric: { AccessTypeDecimal res = new AccessTypeDecimal(); res.Precision = ((DbTypeNumeric)type).Precision; res.Scale = ((DbTypeNumeric)type).Scale; res.IsAutoIncrement = ((DbTypeNumeric)type).Autoincrement; return(res); } case DbTypeCode.Blob: return(new AccessTypeImage()); case DbTypeCode.Text: case DbTypeCode.Array: return(new AccessTypeText()); case DbTypeCode.Float: { DbTypeFloat tp = (DbTypeFloat)type; if (tp.IsMoney) { return(new AccessTypeMoney()); } if (tp.Bytes == 4) { return(new AccessTypeReal()); } else { return(new AccessTypeFloat()); } } case DbTypeCode.Xml: return(new AccessTypeText()); case DbTypeCode.Generic: return(new AccessTypeGeneric { Sql = ((DbTypeGeneric)type).Sql }); } throw new InternalError("DAE-00058 unknown type"); }
public override DbTypeBase ToGenericType() { DbTypeFloat res = new DbTypeFloat(); res.Bytes = 10; res.IsMoney = true; return(res); }
protected override DbTypeBase ToGenericTypeNoArray() { DbTypeFloat res = new DbTypeFloat(); res.Bytes = 10; res.IsMoney = true; return(res); }
private ISpecificType GetPostgreSqlTypeFloat(DbTypeFloat type) { if (type.IsMoney) { return(new PostgreSqlTypeMoney()); } if (type.Bytes == 4) { return(new PostgreSqlTypeReal()); } return(new PostgreSqlTypeDouble()); }
public override DbTypeBase ToGenericType() { if (Precision == null && Scale == null) { var fres = new DbTypeFloat { Bytes = 8 }; fres.SetSpecificAttribute("oracle", "subtype", "number"); return(fres); } if (Precision != null && Scale != null) { var nres = new DbTypeNumeric(); nres.Precision = Precision.Value; nres.Scale = Scale.Value; return(nres); } if ((Scale ?? 0) == 0) { var ires = new DbTypeInt { Bytes = 4 }; if (Precision != null) { ires.SetSpecificAttribute("oracle", "length", Precision.ToString()); } return(ires); } if (Precision == null) { var nres = new DbTypeNumeric(); nres.Scale = Scale.Value; nres.SetSpecificAttribute("oracle", "noprec", "1"); return(nres); } // this should never happen return(new DbTypeNumeric()); }
public override ISpecificType GenericTypeToSpecific(DbTypeBase type, IMigrationProfile profile, IProgressInfo progress) { switch (type.Code) { case DbTypeCode.Int: return(GetSqlTypeInt((DbTypeInt)type)); case DbTypeCode.String: return(GetSqlTypeString((DbTypeString)type)); case DbTypeCode.Logical: return(new SqlTypeBit()); case DbTypeCode.Datetime: { string attr = type.GetSpecificAttribute("mssql", "subtype"); var dtype = type as DbTypeDatetime; if (attr == "timestamp") { return(new SqlTypeTimestamp()); } if (attr == "datetime") { return(new SqlTypeDatetime()); } if (attr == "smalldatetime") { return(new SqlTypeSmallDatetime()); } if (m_version.Is_2008()) { if (dtype.HasTimeZone) { return(new SqlTypeDatetimeOffset()); } if (dtype.SubType == DbDatetimeSubType.Date) { return(new SqlTypeDate()); } if (dtype.SubType == DbDatetimeSubType.Time) { return(new SqlTypeTime()); } if (attr == "datetime2") { return(new SqlTypeDatetime2()); } // on 2008 server prefer datetime2 type // NO: return new SqlTypeDatetime2(); } return(new SqlTypeDatetime()); } case DbTypeCode.Numeric: { SqlTypeNumericBase res; if (type.GetSpecificAttribute("mssql", "subtype") == "decimal") { res = new SqlTypeDecimal(); } else { res = new SqlTypeNumeric(); } res.Precision = ((DbTypeNumeric)type).Precision; res.Scale = ((DbTypeNumeric)type).Scale; res.IsIdentity = ((DbTypeNumeric)type).Autoincrement; int increment; if (Int32.TryParse(type.GetSpecificAttribute("mssql", "identity_increment"), out increment)) { res.IdentityIncrement = increment; res.IdentitySeed = Int32.Parse(type.GetSpecificAttribute("mssql", "identity_seed")); } return(res); } //return String.Format("decimal({0},{1})", ((DbTypeNumeric)type).Precision, ((DbTypeNumeric)type).Scale); case DbTypeCode.Blob: if (type.GetSpecificAttribute("mssql", "subtype") == "variant") { return(new SqlTypeVariant()); } return(new SqlTypeImage()); case DbTypeCode.Text: if (((DbTypeText)type).IsUnicode) { return(new SqlTypeNText()); } else { return(new SqlTypeText()); } case DbTypeCode.Array: return(new SqlTypeText()); case DbTypeCode.Float: { DbTypeFloat tp = (DbTypeFloat)type; if (tp.IsMoney) { if (tp.Bytes == 8) { return(new SqlTypeSmallMoney()); } return(new SqlTypeMoney()); } if (tp.Bytes == 4) { return(new SqlTypeReal()); } else { return(new SqlTypeFloat()); } } case DbTypeCode.Xml: if (m_version.Is_2005()) { return(new SqlTypeXml()); } return(new SqlTypeText()); case DbTypeCode.Generic: return(new SqlTypeGeneric { Sql = ((DbTypeGeneric)type).Sql }); } throw new InternalError("DAE-00332 unknown type"); }