Skip to content

Commit

Permalink
Bug fix to handle index name containing upper case chars
Browse files Browse the repository at this point in the history
  • Loading branch information
mysticmind committed Jan 13, 2025
1 parent 18125da commit bcc8c25
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
14 changes: 14 additions & 0 deletions src/Weasel.Postgresql.Tests/Tables/detecting_table_deltas.cs
Original file line number Diff line number Diff line change
Expand Up @@ -741,4 +741,18 @@ public async Task patching_and_detecting_deltas_with_computed_indexes()

await AssertNoDeltasAfterPatching(table);
}

[Fact]
public async Task patching_and_detecting_deltas_with_upper_case_chars_in_index_name()
{
var table = new Table("deltas.blobs");
table.AddColumn<string>("key").AsPrimaryKey();
table.AddColumn("data", "jsonb");

await CreateSchemaObjectInDatabase(table);

table.Indexes.Add(new IndexDefinition("IdxBlobsDataName") { Columns = new[] { "(data ->> 'Name')" } });

await AssertNoDeltasAfterPatching(table);
}
}
5 changes: 3 additions & 2 deletions src/Weasel.Postgresql/Tables/IndexDefinition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,8 @@ public string ToDDL(Table parent)
builder.Append("CONCURRENTLY ");
}

builder.Append(Name);
// Add double quotes if the index name contains upper case characters
builder.Append(Name.Any(char.IsUpper) ? $"\"{Name}\"" : Name);

builder.Append(" ON ");
builder.Append(parent.Identifier);
Expand Down Expand Up @@ -370,7 +371,7 @@ public static IndexDefinition Parse(string definition)
continue;

case "INDEX":
var name = tokens.Dequeue();
var name = tokens.Dequeue().Trim('"');
index = new IndexDefinition(name) { Mask = string.Empty, IsUnique = isUnique };
break;

Expand Down

0 comments on commit bcc8c25

Please sign in to comment.