Ejemplo n.º 1
0
 protected override void BuildColumnSql(List<string> vals, Column column, bool compoundPrimaryKey)
 {
     AddColumnName(vals, column);
     AddColumnType(vals, column);
     AddDefaultValueSql(vals, column);
     AddNotNullSql(vals, column);
     AddPrimaryKeySql(vals, column, compoundPrimaryKey);
     AddUniqueSql(vals, column);
 }
Ejemplo n.º 2
0
        public virtual string GetColumnSql(Column column, bool compoundPrimaryKey)
        {
            Require.IsNotNull(column, "Не задан обрабатываемый столбец");

            List<string> vals = new List<string>();
            BuildColumnSql(vals, column, compoundPrimaryKey);
            string columnSql = String.Join(" ", vals.ToArray());

            return columnSql;
        }
Ejemplo n.º 3
0
        public ColumnSqlBuilder(Column column, TypeMap typeMap, PropertyMap propertyMap, Func<string, string> nameConverter)
        {
            Require.IsNotNull(column, "Не задан столбец таблицы для построения SQL-выражения");
            Require.IsNotNull(typeMap, "Не задан мэппинг типов данных");
            Require.IsNotNull(propertyMap, "Не задан мэппинг свойств столбца таблицы");
            Require.IsNotNull(nameConverter, "Не задан конвертер имени столбца таблицы");

            this.column = column;
            this.typeMap = typeMap;
            this.propertyMap = propertyMap;
            this.nameConverter = nameConverter;
        }
        public override string GetSqlColumnDef(Column column, bool compoundPrimaryKey)
        {
            var sqlBuilder = new ColumnSqlBuilder(column, typeMap, propertyMap, GetQuotedName);

            sqlBuilder.AppendColumnName();
            sqlBuilder.AppendColumnType(IdentityNeedsType);
            sqlBuilder.AppendDefaultValueSql(GetSqlDefaultValue);
            sqlBuilder.AppendNotNullSql(NeedsNotNullForIdentity);
            sqlBuilder.AppendPrimaryKeySql(compoundPrimaryKey);
            sqlBuilder.AppendUniqueSql();

            return sqlBuilder.ToString();
        }
        public override void ChangeColumn(string table, Column column)
        {
            if (!ColumnExists(table, column.Name))
            {
                Logger.Warn("Column {0}.{1} does not exist", table, column.Name);
                return;
            }

            string tempColumn = "temp_" + column.Name;
            RenameColumn(table, column.Name, tempColumn);
            AddColumn(table, column);
            ExecuteQuery(String.Format("UPDATE {0} SET {1}={2}", table, column.Name, tempColumn));
            RemoveColumn(table, tempColumn);
        }
        // XXX: Using INFORMATION_SCHEMA.COLUMNS should work, but it was causing trouble, so I used the MySQL specific thing.
        public override Column[] GetColumns(string table)
        {
            List<Column> columns = new List<Column>();
            using (
                IDataReader reader =
                    ExecuteQuery(
                        String.Format("SHOW COLUMNS FROM {0}", table)))
            {
                while (reader.Read())
                {
                    Column column = new Column(reader.GetString(0), DbType.String);
                    string nullableStr = reader.GetString(2);
                    bool isNullable = nullableStr == "YES";
                    column.ColumnProperty |= isNullable ? ColumnProperty.Null : ColumnProperty.NotNull;

                    columns.Add(column);
                }
            }

            return columns.ToArray();
        }
        public override Column[] GetColumns(string table)
        {
            List<Column> columns = new List<Column>();
            using (
                IDataReader reader =
                    ExecuteQuery(
                        String.Format("select COLUMN_NAME, IS_NULLABLE from information_schema.columns where table_schema = 'public' AND table_name = lower('{0}');", table)))
            {
                // FIXME: Mostly duplicated code from the Transformation provider just to support stupid case-insensitivty of Postgre
                while (reader.Read())
                {
                    Column column = new Column(reader[0].ToString(), DbType.String);
                    bool isNullable = reader.GetString(1) == "YES";
                    column.ColumnProperty |= isNullable ? ColumnProperty.Null : ColumnProperty.NotNull;

                    columns.Add(column);
                }
            }

            return columns.ToArray();
        }
 public override Column[] GetColumns(string table)
 {
     List<Column> columns = new List<Column>();
     foreach (string columnDef in GetColumnDefs(table))
     {
         string name = ExtractNameFromColumnDef(columnDef);
         // FIXME: Need to get the real type information
         Column column = new Column(name, DbType.String);
         bool isNullable = IsNullable(columnDef);
         column.ColumnProperty |= isNullable ? ColumnProperty.Null : ColumnProperty.NotNull;
         columns.Add(column);
     }
     return columns.ToArray();
 }
        public virtual string GetSqlColumnDef(Column column, bool compoundPrimaryKey)
        {
            var sqlBuilder = new ColumnSqlBuilder(column, typeMap, propertyMap, GetQuotedName);

            sqlBuilder.AppendColumnName();
            sqlBuilder.AppendColumnType(IdentityNeedsType);

            // identity не нуждаетс¤ в типе
            sqlBuilder.AppendSqlForIdentityWhichNotNeedsType(IdentityNeedsType);
            sqlBuilder.AppendUnsignedSql();
            sqlBuilder.AppendNotNullSql(NeedsNotNullForIdentity);
            sqlBuilder.AppendPrimaryKeySql(compoundPrimaryKey);

            // identity нуждаетс¤ в типе
            sqlBuilder.AppendSqlForIdentityWhichNeedsType(IdentityNeedsType);
            sqlBuilder.AppendUniqueSql();
            sqlBuilder.AppendDefaultValueSql(GetSqlDefaultValue);

            return sqlBuilder.ToString();
        }
Ejemplo n.º 10
0
        protected void AddColumnType(List<string> vals, Column column)
        {
            string type = !IdentityNeedsType && column.IsIdentity
                ? String.Empty : GetTypeName(column.ColumnType);

            if (!type.IsNullOrEmpty())
                vals.Add(type);
        }
Ejemplo n.º 11
0
 protected void AddNotNullSql(List<string> vals, Column column)
 {
     if (!column.ColumnProperty.HasProperty(ColumnProperty.PrimaryKey) || NeedsNotNullForIdentity)
         AddValueIfSelected(column, ColumnProperty.NotNull, vals);
 }
Ejemplo n.º 12
0
 protected void AddValueIfSelected(Column column, ColumnProperty property, ICollection<string> vals)
 {
     if (column.ColumnProperty.HasProperty(property))
         vals.Add(SqlForProperty(property));
 }
Ejemplo n.º 13
0
 protected virtual void BuildColumnSql(List<string> vals, Column column, bool compoundPrimaryKey)
 {
     AddColumnName(vals, column);
     AddColumnType(vals, column);
     // identity не нуждается в типе
     AddSqlForIdentityWhichNotNeedsType(vals, column);
     AddUnsignedSql(vals, column);
     AddNotNullSql(vals, column);
     AddPrimaryKeySql(vals, column, compoundPrimaryKey);
     // identity нуждается в типе
     AddSqlForIdentityWhichNeedsType(vals, column);
     AddUniqueSql(vals, column);
     AddForeignKeySql(vals, column);
     AddDefaultValueSql(vals, column);
 }
Ejemplo n.º 14
0
 protected void AddUnsignedSql(List<string> vals, Column column)
 {
     AddValueIfSelected(column, ColumnProperty.Unsigned, vals);
 }
Ejemplo n.º 15
0
 protected void AddSqlForIdentityWhichNotNeedsType(List<string> vals, Column column)
 {
     if (!IdentityNeedsType)// todo: исправить как унаследованные мэпперы
         AddValueIfSelected(column, ColumnProperty.Identity, vals);
 }
Ejemplo n.º 16
0
 protected void AddPrimaryKeySql(List<string> vals, Column column, bool compoundPrimaryKey)
 {
     if (!compoundPrimaryKey)
         AddValueIfSelected(column, ColumnProperty.PrimaryKey, vals);
 }
Ejemplo n.º 17
0
 protected void AddDefaultValueSql(List<string> vals, Column column)
 {
     if (column.DefaultValue != null)
         vals.Add(Default(column.DefaultValue));
 }
        public virtual void AddColumn(SchemaQualifiedObjectName table, Column column)
        {
            string sqlColumnDef = GetSqlColumnDef(column, false);
            string sqlAddColumn = GetSqlAddColumn(table, sqlColumnDef);

            ExecuteNonQuery(sqlAddColumn);
        }
Ejemplo n.º 19
0
 protected void AddColumnName(List<string> vals, Column column)
 {
     vals.Add(NamesNeedsQuote ? Quote(column.Name) : column.Name);
 }
Ejemplo n.º 20
0
 protected void AddForeignKeySql(List<string> vals, Column column)
 {
     AddValueIfSelected(column, ColumnProperty.ForeignKey, vals);
 }