Skip to content

Commit 10bb64c

Browse files
committed
fix to only consider bracketization if tokens aren't already bracketized
1 parent cb3ebf2 commit 10bb64c

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Code/TSqlFlex.Core.Tests/DataScriptingTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,12 @@ public void SimpleObjectName_IsNotEscaped()
842842
Assert.AreEqual("dbo.mytable", FieldScripting.EscapeObjectNames("dbo.mytable"));
843843
}
844844

845+
[Test()]
846+
public void AlreadyEscapedObjectName_IsNotEscaped()
847+
{
848+
Assert.AreEqual("[dbo].[mytable]", FieldScripting.EscapeObjectNames("[dbo].[mytable]"));
849+
}
850+
845851
[Test()]
846852
public void ObjectNameWithSpace_IsEscaped()
847853
{

Code/TSqlFlex.Core/FieldScripting.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,18 @@ public static string EscapeObjectNames(string dotSeparatedRawObjectNames)
134134
var items = dotSeparatedRawObjectNames.Split('.');
135135
for (int i = 0; i < items.Length; i += 1 )
136136
{
137-
items[i] = EscapeObjectName(items[i]);
137+
if (!IsBracketEscaped(items[i])) {
138+
items[i] = EscapeObjectName(items[i]);
139+
}
138140
}
139141
return string.Join(".", items);
140142
}
141143

144+
private static bool IsBracketEscaped(string objectName)
145+
{
146+
return (objectName.StartsWith("[") && objectName.EndsWith("]")); //bug: this is good enough for now, but may not properly consider edge case escaped ] as the final character for example
147+
}
148+
142149
public static StringBuilder scriptDataAsInsertForSQL2008Plus(string tableName, FlexResult result, int MaxRowsInValuesClause)
143150
{
144151
const int INITIAL_CAPACITY = 50000; //This is small enough that it won't matter, but big enough to ensure minimal initial resizes.

0 commit comments

Comments
 (0)