Esempio n. 1
0
        public void TestTwoTablesWithoutDatabases()
        {
            const string sql       = "select * from table t1 inner join schema.table t2 on (t1.id = t2.id)";
            var          databases = CachedSqlPreTransform.FindDatabases(sql);

            Assert.AreEqual(0, databases.Count());
        }
Esempio n. 2
0
        public void TestTableWithOldTimeDoubleQuotes()
        {
            const string sql    = "select * from \"dbo\".\"table\"";
            var          tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("dbo.table", tables.ElementAt(0));
        }
Esempio n. 3
0
        public void TestTableNameWithSpaces()
        {
            const string sql    = "select * from [my table]";
            var          tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("[my table]", tables.ElementAt(0));
        }
Esempio n. 4
0
        public void TestSimplifyTableNames()
        {
            const string sql      = @"select * from ""dbo"".""table"" ""why"" inner join [dbo].[table] [t] on why.id = t.id;";
            var          cleanSql = CachedSqlPreTransform.RemoveExtraDoubleQuotesAndBrackets(sql);

            Assert.AreEqual(@"select * from dbo.table why inner join dbo.table [t] on why.id = t.id;", cleanSql);
        }
Esempio n. 5
0
        public void TestQueriesWithDifferentParameterValuesEndUpTheSame2()
        {
            const string sql1 = "SELECT count(*) FROM Country WHERE (Country.CountryCode LIKE '%b%' OR Country.CountryName LIKE '%b%');";
            const string sql2 = "SELECT count(*) FROM Country WHERE (Country.CountryCode LIKE '%bel%' OR Country.CountryName LIKE '%bel%');";

            Assert.AreEqual(CachedSqlPreTransform.ReplaceParameters(sql1), CachedSqlPreTransform.ReplaceParameters(sql2));
        }
Esempio n. 6
0
        public void TestTableWithDatabaseAndSchema()
        {
            const string sql    = "select * from database.dbo.table;";
            var          tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("database.dbo.table", tables.ElementAt(0));
        }
Esempio n. 7
0
        public void TestQueriesWithDifferentParameterValuesEndUpTheSame1()
        {
            const string sql1 = "UPDATE ORDERS SET Exported=1 WHERE (OrderNumber=11844259) AND Store_ID = 1";
            const string sql2 = "UPDATE ORDERS SET Exported=1 WHERE (OrderNumber=234985793) AND Store_ID = 1";

            Assert.AreEqual(CachedSqlPreTransform.ReplaceParameters(sql1), CachedSqlPreTransform.ReplaceParameters(sql2));
        }
Esempio n. 8
0
        public void TestDistinct()
        {
            const string sql    = "select * from table1 t1 inner join table1 t2 on (t1.id = t2.id);";
            var          tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("table1", tables.ElementAt(0));
        }
Esempio n. 9
0
        public void TestTableWithServerDatabaseAndSchema()
        {
            const string sql    = "select * from [server].[database].[dbo].[table];";
            var          tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("server.database.dbo.table", tables.ElementAt(0));
        }
Esempio n. 10
0
        public void TestNoDatabases()
        {
            const string sql       = "select * from schema.table1";
            var          databases = CachedSqlPreTransform.FindDatabases(sql);

            Assert.AreEqual(0, databases.Count());
        }
Esempio n. 11
0
        public void TestTable()
        {
            const string sql    = "select * from table;";
            var          tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("table", tables.ElementAt(0));
        }
Esempio n. 12
0
        public void TestQueriesWithDifferentParameterValuesEndUpTheSame3()
        {
            const string sql1 = "SELECT \"Customer\".\"Name\", \"Customer\".\"Addr1\", \"Customer\".\"Addr2\", \"pjaddr\".\"addr_key_cd\", \"pjaddr\".\"addr_type_cd\", \"pjaddr\".\"addr_key\", \"pjinvhdr\".\"project_billwith\", \"Customer\".\"Attn\", \"Customer\".\"City\", \"Customer\".\"State\", \"Customer\".\"Zip\", \"Customer\".\"Country\", \"CustCountry\".\"Descr\", \"CustBillCountry\".\"Descr\", \"ProjBillCountry\".\"Descr\", \"pjinvhdr\".\"draft_num\", \"pjinvhdr\".\"customer\", \"pjproj\".\"customer\", \"pjaddr\".\"addr1\", \"pjaddr\".\"addr2\", \"pjaddr\".\"city\", \"pjaddr\".\"state\", \"pjaddr\".\"zip\", \"pjaddr\".\"country\", \"pjaddr\".\"comp_name\", \"pjaddr\".\"individual\", \"Customer\".\"BillAddr1\", \"Customer\".\"BillAddr2\", \"Customer\".\"BillCity\", \"Customer\".\"BillState\", \"Customer\".\"BillZip\", \"Customer\".\"BillCountry\", \"Customer\".\"BillName\", \"Customer\".\"BillAttn\" FROM   (((((\"ScopeApp1\".\"dbo\".\"PJINVHDR\" \"pjinvhdr\" INNER JOIN \"ScopeApp1\".\"dbo\".\"Customer\" \"Customer\" ON \"pjinvhdr\".\"customer\"=\"Customer\".\"CustId\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"PJADDR\" \"pjaddr\" ON \"pjinvhdr\".\"project_billwith\"=\"pjaddr\".\"addr_key\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"PJPROJ\" \"pjproj\" ON \"pjinvhdr\".\"project_billwith\"=\"pjproj\".\"project\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"Country\" \"CustCountry\" ON \"Customer\".\"Country\"=\"CustCountry\".\"CountryID\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"Country\" \"CustBillCountry\" ON \"Customer\".\"BillCountry\"=\"CustBillCountry\".\"CountryID\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"Country\" \"ProjBillCountry\" ON \"pjaddr\".\"country\"=\"ProjBillCountry\".\"CountryID\" WHERE  \"pjinvhdr\".\"draft_num\"='0000089158'";
            const string sql2 = "SELECT \"Customer\".\"Name\", \"Customer\".\"Addr1\", \"Customer\".\"Addr2\", \"pjaddr\".\"addr_key_cd\", \"pjaddr\".\"addr_type_cd\", \"pjaddr\".\"addr_key\", \"pjinvhdr\".\"project_billwith\", \"Customer\".\"Attn\", \"Customer\".\"City\", \"Customer\".\"State\", \"Customer\".\"Zip\", \"Customer\".\"Country\", \"CustCountry\".\"Descr\", \"CustBillCountry\".\"Descr\", \"ProjBillCountry\".\"Descr\", \"pjinvhdr\".\"draft_num\", \"pjinvhdr\".\"customer\", \"pjproj\".\"customer\", \"pjaddr\".\"addr1\", \"pjaddr\".\"addr2\", \"pjaddr\".\"city\", \"pjaddr\".\"state\", \"pjaddr\".\"zip\", \"pjaddr\".\"country\", \"pjaddr\".\"comp_name\", \"pjaddr\".\"individual\", \"Customer\".\"BillAddr1\", \"Customer\".\"BillAddr2\", \"Customer\".\"BillCity\", \"Customer\".\"BillState\", \"Customer\".\"BillZip\", \"Customer\".\"BillCountry\", \"Customer\".\"BillName\", \"Customer\".\"BillAttn\" FROM   (((((\"ScopeApp1\".\"dbo\".\"PJINVHDR\" \"pjinvhdr\" INNER JOIN \"ScopeApp1\".\"dbo\".\"Customer\" \"Customer\" ON \"pjinvhdr\".\"customer\"=\"Customer\".\"CustId\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"PJADDR\" \"pjaddr\" ON \"pjinvhdr\".\"project_billwith\"=\"pjaddr\".\"addr_key\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"PJPROJ\" \"pjproj\" ON \"pjinvhdr\".\"project_billwith\"=\"pjproj\".\"project\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"Country\" \"CustCountry\" ON \"Customer\".\"Country\"=\"CustCountry\".\"CountryID\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"Country\" \"CustBillCountry\" ON \"Customer\".\"BillCountry\"=\"CustBillCountry\".\"CountryID\") LEFT OUTER JOIN \"ScopeApp1\".\"dbo\".\"Country\" \"ProjBillCountry\" ON \"pjaddr\".\"country\"=\"ProjBillCountry\".\"CountryID\" WHERE  \"pjinvhdr\".\"draft_num\"='0000089159'";

            Assert.AreEqual(CachedSqlPreTransform.ReplaceParameters(sql1), CachedSqlPreTransform.ReplaceParameters(sql2));
        }
Esempio n. 13
0
        public void TestSchemaServerDatabaseSchema()
        {
            const string sql     = "select * from server.database.schema.table;";
            var          schemas = CachedSqlPreTransform.FindSchemas(sql);

            Assert.AreEqual(1, schemas.Count());
            Assert.AreEqual("schema", schemas.ElementAt(0));
        }
Esempio n. 14
0
        public void TestTwoTablesSameDboAndDefaultSchema()
        {
            const string sql     = "select * from dbo.table1 t1 inner join table2 t2 on (t1.id = t2.id);";
            var          schemas = CachedSqlPreTransform.FindSchemas(sql);

            Assert.AreEqual(1, schemas.Count());
            Assert.AreEqual("dbo", schemas.ElementAt(0));
        }
Esempio n. 15
0
        public void TestSchemaWithDoubleQuotes()
        {
            const string sql     = "select * from \"schema\".\"table\"";
            var          schemas = CachedSqlPreTransform.FindSchemas(sql);

            Assert.AreEqual(1, schemas.Count());
            Assert.AreEqual("schema", schemas.ElementAt(0));
        }
Esempio n. 16
0
        public void TestSchemaWithBracketsAndAlias()
        {
            const string sql     = "select * from [schema].table t1;";
            var          schemas = CachedSqlPreTransform.FindSchemas(sql);

            Assert.AreEqual(1, schemas.Count());
            Assert.AreEqual("schema", schemas.ElementAt(0));
        }
Esempio n. 17
0
        public void TestOneDatabase()
        {
            const string sql       = "select * from database.schema.table";
            var          databases = CachedSqlPreTransform.FindDatabases(sql);

            Assert.AreEqual(1, databases.Count());
            Assert.AreEqual("database", databases.ElementAt(0));
        }
Esempio n. 18
0
        public void TestSchemaDbo()
        {
            const string sql     = "select * from dbo.table";
            var          schemas = CachedSqlPreTransform.FindSchemas(sql);

            Assert.AreEqual(1, schemas.Count());
            Assert.AreEqual("dbo", schemas.ElementAt(0));
        }
Esempio n. 19
0
        public void TestTwoTablesMixedSchema()
        {
            const string sql     = "select * from schema.table1 t1 inner join table2 t2 on (t1.id = t2.id);";
            var          schemas = CachedSqlPreTransform.FindSchemas(sql);

            Assert.AreEqual(2, schemas.Count());
            Assert.AreEqual("schema", schemas.ElementAt(0));
            Assert.AreEqual("dbo", schemas.ElementAt(1));
        }
Esempio n. 20
0
        public void TestOneExcludedDatabase()
        {
            const string sql      = "select * from AdventureWorks.dbo.table t1 inner join some.table t2 on (t1.id = t2.id)";
            var          schema   = CachedSqlPreTransform.FindCommonSchema(sql);
            var          database = CachedSqlPreTransform.FindCommonDatabase(sql);

            Assert.AreEqual("", schema);
            Assert.AreEqual("AdventureWorks", database);
        }
Esempio n. 21
0
        public void TestTwoDatabases()
        {
            const string sql       = "select * from database1.schema.table t1 inner join database2.schema.table t2 on (t1.id = t2.id)";
            var          databases = CachedSqlPreTransform.FindDatabases(sql);

            Assert.AreEqual(2, databases.Count());
            Assert.AreEqual("database1", databases.ElementAt(0));
            Assert.AreEqual("database2", databases.ElementAt(1));
        }
Esempio n. 22
0
        public void TestCommonSchemaAndDatabase()
        {
            const string sql      = "select * from database.schema.table";
            var          schema   = CachedSqlPreTransform.FindCommonSchema(sql);
            var          database = CachedSqlPreTransform.FindCommonDatabase(sql);

            Assert.AreEqual("schema", schema);
            Assert.AreEqual("database", database);
        }
Esempio n. 23
0
        public void TestNotCommonSchemaAndNotCommonDatabase()
        {
            const string sql      = "select * from database1.schema1.table t1 inner join database2.schema2.table t2 on (t1.id = t2.id)";
            var          schema   = CachedSqlPreTransform.FindCommonSchema(sql);
            var          database = CachedSqlPreTransform.FindCommonDatabase(sql);

            Assert.AreEqual(string.Empty, schema);
            Assert.AreEqual(string.Empty, database);
        }
Esempio n. 24
0
        public void TestCommonSchemaNoDatabase()
        {
            const string sql      = "select * from table";
            var          schema   = CachedSqlPreTransform.FindCommonSchema(sql);
            var          database = CachedSqlPreTransform.FindCommonDatabase(sql);

            Assert.AreEqual("dbo", schema);
            Assert.AreEqual(string.Empty, database);
        }
Esempio n. 25
0
        public void TestNoTables()
        {
            const string sql = "set nocount on;";

            var schema   = CachedSqlPreTransform.FindCommonSchema(sql);
            var database = CachedSqlPreTransform.FindCommonDatabase(sql);

            Assert.AreEqual(string.Empty, schema);
            Assert.AreEqual(string.Empty, database);
        }
Esempio n. 26
0
        public void TestCommonSchemaAndCommonDatabaseDefined()
        {
            const string sql = "select * from database.schema.table t1 inner join database.schema.table t2 on (t1.id = t2.id)";

            var schema   = CachedSqlPreTransform.FindCommonSchema(sql);
            var database = CachedSqlPreTransform.FindCommonDatabase(sql);

            Assert.AreEqual("schema", schema);
            Assert.AreEqual("database", database);
        }
Esempio n. 27
0
        public void TestProblem()
        {
            const string sql = @"
SELECT *
FROM    ""ScopeApp1"".""dbo"".""vr_03681d"" ""vr_03681d"" LEFT OUTER JOIN ""ScopeApp1"".""dbo"".""Currncy"" ""Currncy"" ON ""vr_03681d"".""CuryID""=""Currncy"".""CuryId""
WHERE RI_ID = @Parameter
";

            var tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual(2, tables.Count());
            Assert.AreEqual(@"ScopeApp1.dbo.vr_03681d", tables.First());
            Assert.AreEqual(@"ScopeApp1.dbo.Currncy", tables.Last());
        }
Esempio n. 28
0
        public void TestTableInSubQuery()
        {
            const string sql = @"
select * 
from table1 t1
inner join table2 t2 on (t1.id = t2.id)
inner join (
    select id
    from table3
    where crazy = 'yes'
) x on (t2.id = x.id);";

            var tables = CachedSqlPreTransform.FindTables(sql);

            Assert.AreEqual("table1", tables.ElementAt(0));
            Assert.AreEqual("table2", tables.ElementAt(1));
            Assert.AreEqual("table3", tables.ElementAt(2));
        }
Esempio n. 29
0
        public void TestReplaceSimpleParameters()
        {
            const string sql = @"
                select 0 from t where c = @z;
                select 1 from t where c = 1
                select 2 from t where c = 15.1
                select 3 from t where c = 1.
                select 4 from t where c = .15
                select 5 from t where c=2
                select 6 from t where c > 1
                select 7 from t where c < 1
                select 8 from t where c <> 1
                select 9 from t where c != 1
                select 10 from t where c != 1;
                select 11 from t where c1 = 1 and c2 = 2;
                select 12 from t where c1 = 'dale' and c2 = 3.0
                select 13 from t where c = 'Newman'
                select 14 from t where c1 = '' and c2 = 3
                select 15 from t where c1 = 'stuff' and c2 = '3'
                select 17 from t where c like 'something%'
                select 18 from t where c not like 'something%'
                select 19 from t where c = 'dale''s'
                select 20 from t where c1 = 'dale''s' and c2 = 'x'
                select 21 from t where c = -1
                select 22 from t where c LIKE '%something%'
                select 23 from t where ""t"".""c""='0000089158'
                select 24 from t1 inner join t2 on (t1.field = t2.field) where t2.field = 'x';
                select 25 from t where c = @Parameter
                select 26 from t where c = N'Something'
                select 27 from t1 inner join t2 on (""t1"".""field""=""t2"".""field"") where double_quotes = 'no'
                select 28 from t where [c]='brackets!';
                select 29 from t where x = 0x261BE3E63BBFD8439B5CE2971D70A5DE;
            ";

            const string expected = @"
                select 0 from t where c = @z;
                select 1 from t where c = @Parameter
                select 2 from t where c = @Parameter
                select 3 from t where c = @Parameter
                select 4 from t where c = @Parameter
                select 5 from t where c= @Parameter
                select 6 from t where c > @Parameter
                select 7 from t where c < @Parameter
                select 8 from t where c <> @Parameter
                select 9 from t where c != @Parameter
                select 10 from t where c != @Parameter;
                select 11 from t where c1 = @Parameter and c2 = @Parameter;
                select 12 from t where c1 = @Parameter and c2 = @Parameter
                select 13 from t where c = @Parameter
                select 14 from t where c1 = @Parameter and c2 = @Parameter
                select 15 from t where c1 = @Parameter and c2 = @Parameter
                select 17 from t where c like @Parameter
                select 18 from t where c not like @Parameter
                select 19 from t where c = @Parameter
                select 20 from t where c1 = @Parameter and c2 = @Parameter
                select 21 from t where c = @Parameter
                select 22 from t where c LIKE @Parameter
                select 23 from t where ""t"".""c""= @Parameter
                select 24 from t1 inner join t2 on (t1.field = t2.field) where t2.field = @Parameter;
                select 25 from t where c = @Parameter
                select 26 from t where c = @Parameter
                select 27 from t1 inner join t2 on (""t1"".""field""=""t2"".""field"") where double_quotes = @Parameter
                select 28 from t where [c]= @Parameter;
                select 29 from t where x = @Parameter;
            ";

            var actual = CachedSqlPreTransform.ReplaceParameters(sql);

            Assert.AreEqual(expected, actual);
        }