public void OnColumn(string columnName)
        {
            var column = new IndexColumnDefinition {
                Name = columnName
            };

            Expression.Index.Columns.Add(column);
        }
Beispiel #2
0
 public ICreateIndexColumnOptionsSyntax OnColumn(string columnName)
 {
     CurrentColumn = new IndexColumnDefinition {
         Name = columnName
     };
     Expression.Index.Columns.Add(CurrentColumn);
     return(this);
 }
Beispiel #3
0
        protected virtual IndexDefinition ParseCreateIndexStatement(SqliteSyntaxReader reader)
        {
            var index = new IndexDefinition();

            reader.Read();

            reader.Read();
            index.IsUnique = reader.ValueToUpper == "UNIQUE";

            while (reader.ValueToUpper != "INDEX")
            {
                reader.Read();
            }

            if (reader.Read() == SqliteSyntaxReader.TokenType.StringToken && reader.ValueToUpper == "IF")
            {
                reader.Read(); // NOT
                reader.Read(); // EXISTS
            }
            else
            {
                reader.Rollback();
            }

            index.Name = ParseIdentifier(reader);

            reader.Read(); // ON

            index.TableName = ParseIdentifier(reader);

            // Find Column List
            reader.SkipTillToken(SqliteSyntaxReader.TokenType.ListStart);

            // Split the list.
            var list = reader.ReadList();

            foreach (var columnReader in list)
            {
                var column = new IndexColumnDefinition();
                column.Name = ParseIdentifier(columnReader);

                while (columnReader.Read() == SqliteSyntaxReader.TokenType.StringToken)
                {
                    if (columnReader.ValueToUpper == "COLLATE")
                    {
                        columnReader.Read(); // Skip Collation name
                    }
                    else if (columnReader.ValueToUpper == "DESC")
                    {
                        column.Direction = Direction.Descending;
                    }
                }

                index.Columns.Add(column);
            }

            return(index);
        }
        public void ErrorIsNotReturnedWhenColumnNameIsNotNullOrEmptyString()
        {
            var column = new IndexColumnDefinition {
                Name = "Bacon"
            };
            var errors = ValidationHelper.CollectErrors(column);

            errors.ShouldNotContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty);
        }
        public void ErrorIsReturnedWhenColumnNameIsNull()
        {
            var column = new IndexColumnDefinition {
                Name = null
            };
            var errors = ValidationHelper.CollectErrors(column);

            errors.ShouldContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty);
        }
Beispiel #6
0
        /// <inheritdoc />
        public IExecutableBuilder OnColumn(string columnName)
        {
            var column = new IndexColumnDefinition {
                Name = columnName
            };

            Expression.Index.Columns.Add(column);
            return(new ExecutableBuilder(Expression));
        }
        public static ICollection <IndexColumnDefinition> GetIndexColumnsFromIndexDDL(string IndexSqlDDL)
        {
            ICollection <IndexColumnDefinition> columnList = new Collection <IndexColumnDefinition>();
            var columns_string = IndexSqlDDL.Split(',');

            foreach (var column_Str in columns_string)
            {
                var columnDefinition = new IndexColumnDefinition();
                var split            = NormalizeSpaces(column_Str).Trim().Split(' ');
                columnDefinition.Name      = CleanName(split[0]);
                columnDefinition.Direction = split[1].ToUpper().Equals("ASC") ? Direction.Ascending : Direction.Descending;
                columnList.Add(columnDefinition);
            }
            return(columnList);
        }
Beispiel #8
0
        protected virtual string GetNullsSort(IndexColumnDefinition column)
        {
            var sort = column.GetAdditionalFeature <PostgresIndexNullsSort>(PostgresExtensions.NullsSort);

            if (sort == null)
            {
                return(string.Empty);
            }

            if (sort.Sort == NullSort.First)
            {
                return(" NULLS FIRST");
            }

            return(" NULLS LAST");
        }
Beispiel #9
0
        public override string Generate(CreateIndexExpression expression)
        {
            //Firebird doesn't have particular asc or desc order per column, only per the whole index
            // CREATE [UNIQUE] [ASC[ENDING] | [DESC[ENDING]] INDEX indexname
            //  ON tablename  { (<col> [, <col> ...]) | COMPUTED BY (expression) }
            //  <col>  ::=  a column not of type ARRAY, BLOB or COMPUTED BY
            //
            // Assuming the first column's direction for the index's direction.

            truncator.Truncate(expression);

            StringBuilder indexColumns   = new StringBuilder("");
            Direction     indexDirection = Direction.Ascending;
            int           columnCount    = expression.Index.Columns.Count;

            for (int i = 0; i < columnCount; i++)
            {
                IndexColumnDefinition columnDef = expression.Index.Columns.ElementAt(i);

                if (i > 0)
                {
                    indexColumns.Append(", ");
                }
                else
                {
                    indexDirection = columnDef.Direction;
                }

                indexColumns.Append(Quoter.QuoteColumnName(columnDef.Name));
            }

            return(String.Format(CreateIndex
                                 , GetUniqueString(expression)
                                 , indexDirection == Direction.Ascending ? "ASC " : "DESC "
                                 , Quoter.QuoteIndexName(expression.Index.Name)
                                 , Quoter.QuoteTableName(expression.Index.TableName)
                                 , indexColumns
                                 , CommandDelimiter));
        }
        public void DirectionIsAscendingIfNotSpecified()
        {
            var column = new IndexColumnDefinition();

            column.Direction.ShouldBe(Direction.Ascending);
        }
Beispiel #11
0
 public static void ToLower(this IndexColumnDefinition definition)
 {
     definition.Name = definition.Name.ToLower();
 }