private DataTable GetDataSourceInformation()
{
#if CF
throw new NotSupportedException();
#else
DataTable dt = new DataTable("DataSourceInformation");
dt.Columns.Add("CompositeIdentifierSeparatorPattern", typeof (string));
dt.Columns.Add("DataSourceProductName", typeof (string));
dt.Columns.Add("DataSourceProductVersion", typeof (string));
dt.Columns.Add("DataSourceProductVersionNormalized", typeof (string));
dt.Columns.Add("GroupByBehavior", typeof (GroupByBehavior));
dt.Columns.Add("IdentifierPattern", typeof (string));
dt.Columns.Add("IdentifierCase", typeof (IdentifierCase));
dt.Columns.Add("OrderByColumnsInSelect", typeof (bool));
dt.Columns.Add("ParameterMarkerFormat", typeof (string));
dt.Columns.Add("ParameterMarkerPattern", typeof (string));
dt.Columns.Add("ParameterNameMaxLength", typeof (int));
dt.Columns.Add("ParameterNamePattern", typeof (string));
dt.Columns.Add("QuotedIdentifierPattern", typeof (string));
dt.Columns.Add("QuotedIdentifierCase", typeof (IdentifierCase));
dt.Columns.Add("StatementSeparatorPattern", typeof (string));
dt.Columns.Add("StringLiteralPattern", typeof (string));
dt.Columns.Add("SupportedJoinOperators", typeof (SupportedJoinOperators));
DBVersion v = connection.driver.Version;
string ver = String.Format("{0:0}.{1:0}.{2:0}",
v.Major, v.Minor, v.Build);
DataRow row = dt.NewRow();
row["CompositeIdentifierSeparatorPattern"] = "\\.";
row["DataSourceProductName"] = "MySQL";
row["DataSourceProductVersion"] = connection.ServerVersion;
row["DataSourceProductVersionNormalized"] = ver;
row["GroupByBehavior"] = GroupByBehavior.Unrelated;
row["IdentifierPattern"] =
@"(^\`\p{Lo}\p{Lu}\p{Ll}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Nd}@$#_]*$)|(^\`[^\`\0]|\`\`+\`$)|(^\"" + [^\""\0]|\""\""+\""$)";
row["IdentifierCase"] = IdentifierCase.Insensitive;
row["OrderByColumnsInSelect"] = false;
row["ParameterMarkerFormat"] = "{0}";
row["ParameterMarkerPattern"] = "(@[A-Za-z0-9_$#]*)";
row["ParameterNameMaxLength"] = 128;
row["ParameterNamePattern"] =
@"^[\p{Lo}\p{Lu}\p{Ll}\p{Lm}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}\uff3f_@#\$]*(?=\s+|$)";
row["QuotedIdentifierPattern"] = @"(([^\`]|\`\`)*)";
row["QuotedIdentifierCase"] = IdentifierCase.Sensitive;
row["StatementSeparatorPattern"] = ";";
row["StringLiteralPattern"] = "'(([^']|'')*)'";
row["SupportedJoinOperators"] = 15;
dt.Rows.Add(row);
return dt;
#endif
}