public static void PrepareQueryAndAliases(this SqlSelectStatement sqlSelectStatement) { _aliases = null; var allAliases = new HashSet <string>(StringComparer.OrdinalIgnoreCase); var paramsVisited = new HashSet <SqlParameter>(); var tablesVisited = new HashSet <SqlTableSource>(); new QueryVisitor().VisitAll(sqlSelectStatement, expr => { switch (expr.ElementType) { case QueryElementType.MergeSourceTable: { var source = (SqlMergeSourceTable)expr; Utils.MakeUniqueNames( source.SourceFields, null, (n, a) => !ReservedWords.IsReserved(n), f => f.PhysicalName, (f, n, a) => { f.PhysicalName = n; }, f => { var a = f.PhysicalName; return(a.IsNullOrEmpty() ? "c1" : a + (a !.EndsWith("_") ? string.Empty : "_") + "1"); },
protected sealed override bool IsReserved(string word) { // TODO: now we use static 11g list // proper solution will be use version-based list or load it from V$RESERVED_WORDS (needs research) // right now list is a merge of two lists: // SQL reserved words: https://docs.oracle.com/database/121/SQLRF/ap_keywd001.htm // PL/SQL reserved words: https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/reservewords.htm // keywords are not included as they are keywords :) // // V$RESERVED_WORDS: https://docs.oracle.com/cd/B28359_01/server.111/b28320/dynviews_2126.htm return(ReservedWords.IsReserved(word, ProviderName.Oracle)); }
protected sealed override bool IsReserved(string word) { return(ReservedWords.IsReserved(word, ProviderName.PostgreSQL)); }
protected sealed override bool IsReserved(string word) { return(ReservedWords.IsReserved(word, ProviderName.Firebird)); }
public void Test([Values("", TestProvName.AllPostgreSQL, TestProvName.AllOracle)] string providerName) { Assert.True(ReservedWords.IsReserved("select", providerName)); Assert.True(ReservedWords.IsReserved("SELECT", providerName)); Assert.True(ReservedWords.IsReserved("Select", providerName)); }
protected override bool IsReserved(string word) { return(ReservedWords.IsReserved(word, ProviderName.Informix)); }