Skip to content

Commit 6141f1e

Browse files
committed
Update still present square bracket identifiers to backticks.
1 parent 0df985e commit 6141f1e

File tree

7 files changed

+33
-44
lines changed

7 files changed

+33
-44
lines changed

src/EFCore.Jet/Scaffolding/Internal/JetDatabaseModelFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class JetDatabaseModelFactory : DatabaseModelFactory
3434
private Dictionary<string, DatabaseColumn> _tableColumns;
3535

3636
private static string ObjectKey([NotNull] string name)
37-
=> "[" + name + "]";
37+
=> "`" + name + "`";
3838

3939
private static string TableKey(DatabaseTable table)
4040
=> TableKey(table.Name);
@@ -48,6 +48,7 @@ private static string ColumnKey(DatabaseTable table, string columnName)
4848
private static readonly List<string> _tablePatterns = new List<string>
4949
{
5050
"{table}",
51+
"`{table}`",
5152
"[{table}]"
5253
};
5354

src/System.Data.Jet/JetCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class JetCommand : DbCommand, ICloneable
1919
private int? _rowCount;
2020

2121
private static readonly Regex _skipRegularExpression = new Regex(@"\bskip\s(?<stringSkipCount>@.*)\b", RegexOptions.IgnoreCase);
22-
private static readonly Regex _selectRowCountRegularExpression = new Regex(@"^\s*select\s*@@rowcount\s*[;]?\s*$", RegexOptions.IgnoreCase);
22+
private static readonly Regex _selectRowCountRegularExpression = new Regex(@"^\s*select\s*@@rowcount\s*;?\s*$", RegexOptions.IgnoreCase);
2323
private static readonly Regex _ifStatementRegex = new Regex(@"^\s*if\s*(?<not>not)?\s*exists\s*\((?<sqlCheckCommand>.+)\)\s*then\s*(?<sqlCommand>.*)$", RegexOptions.IgnoreCase);
2424

2525
protected JetCommand(JetCommand source)

src/System.Data.Jet/JetConnection.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,8 +417,7 @@ public bool TableExists(string tableName)
417417

418418
try
419419
{
420-
var sqlFormat = "select count(*) from [{0}] where 1=2";
421-
CreateCommand(string.Format(sqlFormat, tableName))
420+
CreateCommand($"select count(*) from `{tableName}` where 1=2")
422421
.ExecuteNonQuery();
423422
tableExists = true;
424423
}

src/System.Data.Jet/JetStoreSchemaDefinition/JetRenameHandling.cs

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,47 @@
22

33
namespace System.Data.Jet.JetStoreSchemaDefinition
44
{
5-
class JetRenameHandling
5+
internal class JetRenameHandling
66
{
7-
private static Regex _renameTableRegex = new Regex(
8-
$@"^\s*rename\s+table\s+{GetQuotedOrUnquotedNamePattern("tableName")}\s+to\s+{GetQuotedOrUnquotedNamePattern("newTableName")}\s*$",
7+
private static readonly Regex _renameTableRegex = new Regex(
8+
$@"^\s*rename\s+table\s+{GetIdentifierPattern("OldTableName")}\s+to\s+{GetIdentifierPattern("NewTableName")}\s*$",
99
RegexOptions.IgnoreCase);
1010

11-
private static Regex _renameTableColumnRegex = new Regex(
12-
$@"^\s*rename\s+column\s+{GetQuotedOrUnquotedNamePattern("tableName")}\.{GetQuotedOrUnquotedNamePattern("columnName")}\s+to\s+{GetQuotedOrUnquotedNamePattern("newColumnName")}\s*$",
11+
private static readonly Regex _renameTableColumnRegex = new Regex(
12+
$@"^\s*rename\s+column\s+{GetIdentifierPattern("TableName")}\s*\.\s*{GetIdentifierPattern("OldColumnName")}\s+to\s+{GetIdentifierPattern("NewColumnName")}\s*$",
1313
RegexOptions.IgnoreCase);
1414

1515
public static bool TryDatabaseOperation(string connectionString, string commandText)
1616
{
17-
Match match;
18-
19-
20-
match = _renameTableRegex.Match(commandText);
17+
var match = _renameTableRegex.Match(commandText);
2118
if (match.Success)
2219
{
23-
string tableName = match.Groups["tableName"].Value;
24-
string newTableName = match.Groups["newTableName"].Value;
20+
var oldTableName = match.Groups["OldTableName"].Value;
21+
var newTableName = match.Groups["NewTableName"].Value;
2522

2623
// TODO: Only use ADOX in an OLE DB context. Use DAO in an ODBC context.
27-
AdoxWrapper.RenameTable(connectionString, RemoveBrackets(tableName), RemoveBrackets(newTableName));
24+
AdoxWrapper.RenameTable(connectionString, oldTableName, newTableName);
2825

2926
return true;
3027
}
3128

3229
match = _renameTableColumnRegex.Match(commandText);
3330
if (match.Success)
3431
{
35-
string tableName = match.Groups["tableName"].Value;
36-
string columnName = match.Groups["columnName"].Value;
37-
string newColumnName = match.Groups["newColumnName"].Value;
38-
AdoxWrapper.RenameColumn(connectionString, RemoveBrackets(tableName), RemoveBrackets(columnName), RemoveBrackets(newColumnName));
32+
var tableName = match.Groups["TableName"].Value;
33+
var oldColumnName = match.Groups["OldColumnName"].Value;
34+
var newColumnName = match.Groups["NewColumnName"].Value;
35+
36+
// TODO: Only use ADOX in an OLE DB context. Use DAO in an ODBC context.
37+
AdoxWrapper.RenameColumn(connectionString, tableName, oldColumnName, newColumnName);
38+
3939
return true;
4040
}
4141

4242
return false;
4343
}
4444

45-
private static string RemoveBrackets(string name)
46-
{
47-
if (name.StartsWith("[") && name.EndsWith("]"))
48-
return name.Substring(1, name.Length - 2);
49-
else
50-
return name;
51-
}
52-
53-
54-
static string GetQuotedOrUnquotedNamePattern(string key)
55-
{
56-
return $@"((?<{key}>\S*)|\[(?<{key}>.*)\])";
57-
}
45+
private static string GetIdentifierPattern(string key)
46+
=> $@"(?:`(?<{key}>.*?)`|\[(?<{key}>.*?)\]|(?<{key}>\S*))";
5847
}
5948
}

src/System.Data.Jet/JetStoreSchemaDefinition/JetStoreSchemaDefinitionRetrieve.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ private static DbDataReader GetDbDataReaderFromComplexStatement(DbConnection con
8585
if (showStatementPosition == -1)
8686
continue;
8787

88-
commandText = commandText.ReplaceCaseInsensitive("\\(\\s*show " + table.Name + "\\s*\\)", "[" + table.TableName + "]");
89-
commandText = commandText.ReplaceCaseInsensitive("show " + table.Name, "[" + table.TableName + "]");
88+
commandText = commandText.ReplaceCaseInsensitive("\\(\\s*show " + table.Name + "\\s*\\)", "`" + table.TableName + "`");
89+
commandText = commandText.ReplaceCaseInsensitive("show " + table.Name, "`" + table.TableName + "`");
9090
tablesToCreate.Add(table);
9191
}
9292

@@ -174,13 +174,13 @@ private static string GetInsertStatement(string tableName, DataRow row)
174174
values += ", ";
175175
}
176176

177-
columns += string.Format("[{0}]", column.ColumnName);
177+
columns += string.Format("`{0}`", column.ColumnName);
178178
object value = row[column];
179179
values += JetSyntaxHelper.ToSqlStringSwitch(value);
180180
}
181181
}
182182

183-
return string.Format("INSERT INTO [{0}] ({1}) VALUES ({2})", tableName, columns, values);
183+
return string.Format("INSERT INTO `{0}` ({1}) VALUES ({2})", tableName, columns, values);
184184
}
185185

186186
[DebuggerStepThrough]

src/System.Data.Jet/JetStoreSchemaDefinition/SystemTableCollection.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ public void Refresh()
7171

7272
foreach (SystemTable table in this)
7373
{
74-
table.DropStatement = string.Format("DROP TABLE [{0}]", table.TableName);
75-
table.ClearStatement = string.Format("DELETE FROM [{0}]", table.TableName);
74+
table.DropStatement = string.Format("DROP TABLE `{0}`", table.TableName);
75+
table.ClearStatement = string.Format("DELETE FROM `{0}`", table.TableName);
7676

7777
StringBuilder createStatementStringBuilder = new StringBuilder();
78-
createStatementStringBuilder.AppendFormat("CREATE TABLE [{0}]\r\n", table.TableName);
78+
createStatementStringBuilder.AppendFormat("CREATE TABLE `{0}`\r\n", table.TableName);
7979
createStatementStringBuilder.Append("(");
8080
bool first = true;
8181
foreach (Column column in table.Columns)
@@ -85,7 +85,7 @@ public void Refresh()
8585
else
8686
createStatementStringBuilder.Append(",");
8787
createStatementStringBuilder.AppendLine();
88-
createStatementStringBuilder.AppendFormat(" [{0}] {1}{2} {3}",
88+
createStatementStringBuilder.AppendFormat(" `{0}` {1}{2} {3}",
8989
column.Name,
9090
column.Type,
9191
column.MaxLength == null ? "" : string.Format("({0})", column.MaxLength),

src/System.Data.Jet/JetSyntaxHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static string ReplaceCaseInsensitive(this string s, string oldValue, stri
1515
public static string ToSqlString(string value)
1616
{
1717
// In Jet everything's unicode
18-
return "'" + value.Replace("'", "''") + "'";
18+
return $"'{value.Replace("'", "''")}'";
1919
}
2020

2121
public static string ToSqlString(int value)
@@ -84,9 +84,9 @@ public static string ToSqlString(Guid value)
8484
internal static string QuoteIdentifier(string name)
8585
{
8686
if (string.IsNullOrWhiteSpace(name))
87-
throw new ArgumentNullException("name");
87+
throw new ArgumentNullException(nameof(name));
8888

89-
return "[" + name.Replace("]", "]]") + "]";
89+
return $"`{name}`";
9090
}
9191

9292
/// <summary>

0 commit comments

Comments
 (0)