Ejemplo n.º 1
0
        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");
                        },
Ejemplo n.º 2
0
 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));
 }
Ejemplo n.º 3
0
 protected sealed override bool IsReserved(string word)
 {
     return(ReservedWords.IsReserved(word, ProviderName.PostgreSQL));
 }
Ejemplo n.º 4
0
 protected sealed override bool IsReserved(string word)
 {
     return(ReservedWords.IsReserved(word, ProviderName.Firebird));
 }
Ejemplo n.º 5
0
 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));
 }
Ejemplo n.º 6
0
 protected override bool IsReserved(string word)
 {
     return(ReservedWords.IsReserved(word, ProviderName.Informix));
 }