public IColumn CreateInstance(ColumnTypeName columnType, string colName, bool isNullable, string def, Dictionary <string, object> details) { int length = 0; int prec = 0; int scale = 0; string collation = ""; bool isIdentity = false; if (details.ContainsKey("Length")) { length = Convert.ToInt32(details["Length"]); } if (details.ContainsKey("Prec")) { prec = Convert.ToInt32(details["Prec"]); } if (details.ContainsKey("Scale")) { scale = Convert.ToInt32(details["Scale"]); } if (details.ContainsKey("Collation")) { collation = details["Collation"].ToString(); } if (details.ContainsKey("Identity")) { isIdentity = Convert.ToBoolean(details["Identity"]); } return(CreateInstance(columnType, colName, length, prec, scale, isNullable, isIdentity, def, collation)); }
protected OracleColumn(string name, ColumnTypeName type, bool isNullable, string def) { Name = name; Type = type; IsNullable = isNullable; _default = def; Details = new Dictionary <string, object>(); }
public OracleRawColumn(string name, ColumnTypeName type, int length, bool isNullable, string def) : base(name, type, isNullable, def) { Details["Length"] = length; if (IsGuid) { base.Default = ConvertNativeFunctionToKeyword(def); } }
protected void CreateTable(ColumnTypeName type, int length, int prec, int scale, bool isNullable, string def, string collation) { IAXmlReader xmlReader = new AXmlReader(DbContext); ITableDefinition tableDefinition = xmlReader.ReadSchema( DbContext.ColumnTypeConverterForRead, XmlFileHelper.CreateSchemaXmlOneColumn(TableName, type.ConvertToString(), length, prec, scale, isNullable, def, collation)); DbSchema.CreateTable(tableDefinition); }
protected SqlServerColumn(string name, ColumnTypeName type, bool isNullable, bool isIdentity, string def) { Name = name; Type = type; IsNullable = isNullable; IsIdentity = isIdentity; _default = def; _details = new Dictionary <string, object>(); }
protected void TestColumn(ColumnTypeName type, int length, int prec, int scale, bool isNullable, string def, string collation) { List <IColumn> columns = new List <IColumn> { ColumnFactory.CreateInstance(type, "col1", length, prec, scale, isNullable, false, def, collation) }; ITableDefinition expectedTableDefinition = PowerPlant.CreateTableDefinition(TableName, columns, ""); DbSchema.CreateTable(expectedTableDefinition); var columnTypeConverter = DbContext.PowerPlant.CreateColumnTypeConverter(ConversionFileForWrite); ITableDefinition retrievedTableDefinition = DbSchema.GetTableDefinition(columnTypeConverter, TableName); AssertTableDefinition(expectedTableDefinition, retrievedTableDefinition); }
public OracleNumberColumn(string name, ColumnTypeName columnTypeName, int prec, int scale, bool isNullable, string def) : base(name, columnTypeName, isNullable, def) { Details["Prec"] = prec; Details["Scale"] = scale; if (prec == 0 && scale == 0) { _typeToString = "number"; } else if (prec == 0 && scale != 0) { _typeToString = $"number(*,{scale})"; } else if (prec != 0 && scale == 0) { _typeToString = $"number({prec})"; } else { _typeToString = $"number({prec},{scale})"; } }
public IColumn CreateInstance(ColumnTypeName type, string name, int length, int prec, int scale, bool isNullable, bool isIdentity, string def, string collation) { switch (type) { case ColumnTypeName.BinaryDouble: return(new SqlServerFloatColumn(name, 53, isNullable, def)); case ColumnTypeName.BinaryFloat: return(new SqlServerRealColumn(name, isNullable, def)); case ColumnTypeName.Blob: return(new SqlServerVarBinaryColumn(name, length, isNullable, def)); case ColumnTypeName.Bool: return(new SqlServerBitColumn(name, isNullable, def)); case ColumnTypeName.Char: return(new SqlServerCharColumn(name, length, isNullable, def, collation)); case ColumnTypeName.Date: return(new SqlServerDateColumn(name, isNullable, def)); case ColumnTypeName.DateTime: return(new SqlServerDatetimeColumn(name, isNullable, def)); case ColumnTypeName.DateTime2: return(new SqlServerDatetime2Column(name, scale, isNullable, def)); case ColumnTypeName.Dec: return(new SqlServerDecColumn(name, prec, scale, isNullable, isIdentity, def)); case ColumnTypeName.Float: return(new SqlServerFloatColumn(name, prec, isNullable, def)); case ColumnTypeName.Guid: return(new SqlServerGuidColumn(name, isNullable, def)); case ColumnTypeName.Int: return(new SqlServerIntColumn(name, isNullable, isIdentity, def)); case ColumnTypeName.Int16: return(new SqlServerSmallIntColumn(name, isNullable, isIdentity, def)); case ColumnTypeName.Int64: return(new SqlServerBigIntColumn(name, isNullable, isIdentity, def)); case ColumnTypeName.Int8: return(new SqlServerTinyIntColumn(name, isNullable, isIdentity, def)); case ColumnTypeName.LongText: return(new SqlServerVarcharColumn(name, -1, isNullable, def, collation)); case ColumnTypeName.NChar: return(new SqlServerNCharColumn(name, length, isNullable, def, collation)); case ColumnTypeName.NLongText: return(new SqlServerNVarcharColumn(name, -1, isNullable, def, collation)); case ColumnTypeName.NOldText: return(new SqlServerNTextColumn(name, isNullable, def, collation)); case ColumnTypeName.NVarchar: return(new SqlServerNVarcharColumn(name, length, isNullable, def, collation)); case ColumnTypeName.OldBlob: return(new SqlServerImageColumn(name, isNullable, def)); case ColumnTypeName.OldText: return(new SqlServerTextColumn(name, isNullable, def, collation)); case ColumnTypeName.Money: return(new SqlServerMoneyColumn(name, isNullable, def)); case ColumnTypeName.Raw: return(new SqlServerBinaryColumn(name, length, isNullable, def)); case ColumnTypeName.SmallDateTime: return(new SqlServerSmallDateTimeColumn(name, isNullable, def)); case ColumnTypeName.SmallMoney: return(new SqlServerSmallMoneyColumn(name, isNullable, def)); case ColumnTypeName.Time: return(new SqlServerTimeColumn(name, isNullable, def)); case ColumnTypeName.Timestamp: return(new SqlServerTimestampColumn(name, isNullable, def)); case ColumnTypeName.Varchar: return(new SqlServerVarcharColumn(name, length, isNullable, def, collation)); case ColumnTypeName.VarRaw: return(new SqlServerVarBinaryColumn(name, length, isNullable, def)); } throw new AColumnTypeException($"Illegal type: {type}"); }
public IColumn CreateInstance(ColumnTypeName type, string name, bool isNullable, string def) { return(CreateInstance(type, name, 0, 0, 0, isNullable, false, def, "")); }
public IColumn CreateInstance(ColumnTypeName type, string name, int length, bool isNullable, string def, string collation) { return(CreateInstance(type, name, length, 0, 0, isNullable, false, def, collation)); }
public override ITableDefinition GetTableDefinition(IColumnTypeConverter columnTypeConverter, string tableName) { string selectStmt = ""; selectStmt += "SELECT c.name, " + "\n"; selectStmt += " t.name AS t_name, " + "\n"; selectStmt += " isnull(c.max_length, 0) as length, " + "\n"; selectStmt += " isnull(c.precision, 0) as prec, " + "\n"; selectStmt += " isnull(c.scale, 0) as scale, " + "\n"; selectStmt += " c.is_nullable, " + "\n"; selectStmt += " convert(varchar(256), isnull(c.collation_name, '')) as collation, " + "\n"; selectStmt += " isnull(object_definition(c.default_object_id), '') as def, " + "\n"; selectStmt += " c.is_identity " + "\n"; selectStmt += "FROM sys.columns c " + "\n"; selectStmt += " JOIN sys.types t " + "\n"; selectStmt += " ON c.user_type_id = t.user_type_id " + "\n"; selectStmt += string.Format("WHERE c.object_id = Object_id('{0}') ", tableName) + "\n"; selectStmt += "ORDER BY c.column_id "; IColumnFactory columnFactory = DbContext.PowerPlant.CreateColumnFactory(); List <IColumn> columns = new List <IColumn>(); bool tableHasBlobColumn = false; IDataCursor cursor = null; try { cursor = DbContext.PowerPlant.CreateDataCursor(); IDataReader reader = cursor.ExecuteReader(selectStmt); while (reader.Read()) { string name = reader.GetString(0); string type = reader.GetString(1); int length = reader.GetInt16(2); if (length != -1 && (type == "nvarchar" || type == "nchar")) { length /= 2; } int prec = reader.GetByte(3); int scale = reader.GetByte(4); if (scale != 0 && type == "datetime2") { prec = 0; } bool isNullable = reader.GetBoolean(5); string collation = reader.GetString(6); string def = reader.GetString(7); bool isIdentity = reader.GetBoolean(8); string sourceType = type.AddParameters(); ColumnTypeName colType = columnTypeConverter.GetDestinationType(sourceType, ref length, ref prec, ref scale).ColumnTypeName(length); if (colType == ColumnTypeName.Blob || colType == ColumnTypeName.OldBlob) { tableHasBlobColumn = true; } columns.Add( columnFactory.CreateInstance( colType, name, length, prec, scale, isNullable, isIdentity, def, collation) ); } } catch (Exception ex) { throw new ADatabaseException("ERROR when Get TableDefinition: " + selectStmt, ex); } finally { if (cursor != null) { cursor.Close(); } } ITableDefinition tableDefinition = DbContext.PowerPlant.CreateTableDefinition(tableName, columns, GetSegmentName(tableName)); tableDefinition.HasBlobColumn = tableHasBlobColumn; tableDefinition.Columns.RemoveAll(c => c.Name == "agrtid"); return(tableDefinition); }
private void TestNumberColumn(ColumnTypeName type, int prec, int scale) { TestColumn(type, 0, prec, scale, false, "0", ""); }
private void TestStringColumn(ColumnTypeName colType) { TestColumn(colType, 50, 0, 0, false, "' '", ""); }
public IColumn CreateInstance(ColumnTypeName type, string name, int length, int prec, int scale, bool isNullable, bool isIdentity, string def, string collation) { switch (type) { case ColumnTypeName.BinaryDouble: return(new OracleBinaryDoubleColumn(name, isNullable, def)); case ColumnTypeName.BinaryFloat: return(new OracleBinaryFloatColumn(name, isNullable, def)); case ColumnTypeName.Blob: return(new OracleBlobColumn(name, isNullable, def)); case ColumnTypeName.Bool: case ColumnTypeName.Dec: case ColumnTypeName.Int: case ColumnTypeName.Int16: case ColumnTypeName.Int64: case ColumnTypeName.Int8: case ColumnTypeName.Money: case ColumnTypeName.SmallMoney: return(new OracleNumberColumn(name, type, prec, scale, isNullable, def)); case ColumnTypeName.Char: return(new OracleCharColumn(name, length, isNullable, def)); case ColumnTypeName.Date: case ColumnTypeName.DateTime: return(new OracleDateColumn(name, isNullable, def)); case ColumnTypeName.DateTime2: return(new OracleTimestampColumn(name, scale, isNullable, def)); case ColumnTypeName.Float: return(new OracleFloatColumn(name, prec, isNullable, def)); case ColumnTypeName.Guid: return(new OracleRawColumn(name, type, 16, isNullable, def)); case ColumnTypeName.LongText: return(new OracleClobColumn(name, isNullable, def)); case ColumnTypeName.NChar: return(new OracleNCharColumn(name, length, isNullable, def)); case ColumnTypeName.NLongText: return(new OracleNClobColumn(name, isNullable, def)); case ColumnTypeName.NVarchar: return(new OracleNVarchar2Column(name, length, isNullable, def)); case ColumnTypeName.OldBlob: return(new OracleLongRawColumn(name, isNullable, def)); case ColumnTypeName.OldText: return(new OracleLongColumn(name, isNullable, def)); case ColumnTypeName.Raw: return(new OracleRawColumn(name, type, length, isNullable, def)); case ColumnTypeName.SmallDateTime: case ColumnTypeName.Time: return(new OracleDateColumn(name, isNullable, def)); case ColumnTypeName.Varchar: return(new OracleVarchar2Column(name, length, isNullable, def)); } throw new AColumnTypeException($"Illegal type: {type}"); }
private void TestNumberColumn(ColumnTypeName type) { TestColumn(type, 0, 0, 0, false, "0", ""); }
private void TestStringColumn(ColumnTypeName colType) { TestColumn(colType, 50, 0, 0, false, "' '", "Danish_Norwegian_CI_AS"); }