Esempio n. 1
0
        public void EqOrNullTest()
        {
            using (ISession session = OpenSession())
            {
                var criteria      = (CriteriaImpl)session.CreateCriteria(typeof(Simple));
                var criteriaQuery = new CriteriaQueryTranslator(sessions, criteria, criteria.EntityOrClassName, "sql_alias");

                ICriterion exp       = Criterion.EqOrNull("Name", "foo");
                SqlString  sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());

                string expectedSql = "sql_alias.Name = ?";

                Assert.AreEqual(expectedSql, sqlString.ToString());
                Assert.AreEqual(1, sqlString.GetParameterCount());

                exp       = Criterion.EqOrNull("Name", null);
                sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());

                expectedSql = "sql_alias.Name is null";

                Assert.AreEqual(expectedSql, sqlString.ToString());
                Assert.AreEqual(0, sqlString.GetParameterCount());

                // Check that the result is the same than using official Restriction
                ICriterion orExpExpected = Restrictions.Or(Restrictions.IsNull("Name"), Restrictions.Eq("Name", "foo"));
                ICriterion orExpActual   = Restrictions.Or(Criterion.EqOrNull("Name", null), Criterion.EqOrNull("Name", "foo"));

                SqlString sqlStringExpected = orExpExpected.ToSqlString(criteria, criteriaQuery,
                                                                        new CollectionHelper.EmptyMapClass <string, IFilter>());
                SqlString sqlStringActual = orExpActual.ToSqlString(criteria, criteriaQuery,
                                                                    new CollectionHelper.EmptyMapClass <string, IFilter>());
                Assert.AreEqual(sqlStringExpected.ToString(), sqlStringActual.ToString());
            }
        }
Esempio n. 2
0
        public void SelectStringSqlTest()
        {
            Configuration   cfg     = new Configuration();
            ISessionFactory factory = cfg.BuildSessionFactory();

            ISessionFactoryImplementor factoryImpl = (ISessionFactoryImplementor)factory;
            SqlSelectBuilder           select      = new SqlSelectBuilder(factoryImpl);

            select.SetSelectClause("column1, column2");
            select.SetFromClause("select_test", "select_test_alias");
            select.SetOuterJoins(
                new SqlString(" LEFT OUTER JOIN before ON select_test_alias.column1 = before.column1"),
                new SqlString(" after.some_field = after.another_field "));
            select.SetOrderByClause(new SqlString("column1 DESC"));

            select.SetWhereClause("select_test_alias", new string[] { "identity_column" }, NHibernateUtil.Int64);

            SqlString sqlString = select.ToSqlString();

            string expectedSql = new StringBuilder().Append("SELECT ")
                                 .Append("column1, column2 ")
                                 .Append("FROM select_test select_test_alias ")
                                 .Append("LEFT OUTER JOIN before ON select_test_alias.column1 = before.column1 ")
                                 .Append("WHERE ")
                                 .Append("after.some_field = after.another_field")
                                 .Append(" AND ")
                                 .Append("select_test_alias.identity_column = ? ")
                                 .Append("ORDER BY column1 DESC")
                                 .ToString();


            Assert.AreEqual(expectedSql, sqlString.ToString(), "SQL String");
            Assert.AreEqual(1, sqlString.GetParameterCount(), "One parameter");
        }
Esempio n. 3
0
        public void GetLimitString_NoOffsetSpecified_UsesFetchFirstOnly()
        {
            // arrange
            DB2Dialect dialect = new DB2Dialect();
            SqlString  sql     = new SqlString(
                new object[]
            {
                "select a, b, c ",
                "from d",
                " where X = ",
                Parameter.Placeholder,
                " and Z = ",
                Parameter.Placeholder,
                " order by a, x"
            });

            // act
            SqlString limited = dialect.GetLimitString(sql, null, new SqlString("222"));

            // assert
            Assert.AreEqual(
                "select a, b, c from d where X = ? and Z = ? order by a, x fetch first 222 rows only",
                limited.ToString());
            Assert.AreEqual(2, limited.GetParameterCount());
        }
        public void StartsWithTest()
        {
            using (ISession session = OpenSession())
            {
                var criteria      = (CriteriaImpl)session.CreateCriteria(typeof(Simple));
                var criteriaQuery = new CriteriaQueryTranslator(sessions, criteria, criteria.EntityOrClassName, "sql_alias");

                ICriterion exp       = Criterion.StartsWith("Number", "2");
                SqlString  sqlString = exp.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());

                string expectedSql = "sql_alias.Number like ?";

                Assert.AreEqual(expectedSql, sqlString.ToString());
                Assert.AreEqual(1, sqlString.GetParameterCount());
            }
        }
        public void SimpleSelectStringSqlTest()
        {
            Configuration   cfg     = new Configuration();
            ISessionFactory factory = cfg.BuildSessionFactory();

            ISessionFactoryImplementor factoryImpl = (ISessionFactoryImplementor)factory;
            SqlSimpleSelectBuilder     select      = new SqlSimpleSelectBuilder(factoryImpl.Dialect, factoryImpl);

            select.SetTableName("test_simple_select_builder");
            select.AddColumn("column_no_alias");
            select.AddColumn("aliased_column", "aliased_column_alias");

            select.AddColumns(new string[] { "column1_no_alias", "column2_no_alias" });
            select.AddColumns(new string[] { "column1_with_alias", "column2_with_alias" }, new string[] { "c1_alias", "c2_alias" });

            select.SetIdentityColumn(new string[] { "identity_column" }, NHibernateUtil.Int64);
            select.SetVersionColumn(new string[] { "version_column" }, (IVersionType)NHibernateUtil.Int32);

            select.AddWhereFragment(new string[] { "where_frag_column" }, NHibernateUtil.Int32, " = ");

            SqlString sqlString = select.ToSqlString();

            Parameter[] actualParams = new Parameter[3];

            string expectedSql = new StringBuilder().Append("SELECT ")
                                 .Append("column_no_alias, ")
                                 .Append("aliased_column AS aliased_column_alias, ")
                                 .Append("column1_no_alias, ")
                                 .Append("column2_no_alias, ")
                                 .Append("column1_with_alias AS c1_alias, ")
                                 .Append("column2_with_alias AS c2_alias ")
                                 .Append("FROM test_simple_select_builder ")
                                 .Append("WHERE identity_column = ? AND version_column = ?")
                                 .Append(" AND where_frag_column = ?")
                                 .ToString();


            Assert.AreEqual(expectedSql, sqlString.ToString(), "SQL String");
            Assert.AreEqual(3, sqlString.GetParameterCount(), "3 parameters");
        }
Esempio n. 6
0
        public void GetLimitString()
        {
            DB2Dialect dialect = new DB2Dialect();
            SqlString  sql     = new SqlString(
                new object[]
            {
                "select a, b, c ",
                "from d",
                " where X = ",
                Parameter.Placeholder,
                " and Z = ",
                Parameter.Placeholder,
                " order by a, x"
            });

            SqlString limited = dialect.GetLimitString(sql, new SqlString("111"), new SqlString("222"));

            Assert.AreEqual(
                "select * from (select rownumber() over(order by a, x) as rownum, a, b, c from d where X = ? and Z = ? order by a, x) as tempresult where rownum between 111+1 and 222",
                limited.ToString());
            Assert.AreEqual(2, limited.GetParameterCount());
        }
 protected void CompareSqlStrings(SqlString actualSqlString, string expectedString, int expectedNumOfParameters)
 {
     Assert.AreEqual(expectedString, actualSqlString.ToString(), "SqlString.ToString()");
     Assert.AreEqual(expectedNumOfParameters, actualSqlString.GetParameterCount(), "Num of Parameters");
 }