@@ -112,6 +112,9 @@ public void ScrollCriteria()
112112 [ Test ]
113113 public void AllowToSetLimitOnSubqueries ( )
114114 {
115+ if ( ! TestDialect . SupportsNakedSubqueryInWhereClause )
116+ Assert . Ignore ( Dialect . GetType ( ) . Name + " does not support subqueries in where clause" ) ;
117+
115118 using ( ISession session = OpenSession ( ) )
116119 {
117120 DetachedCriteria dc = DetachedCriteria . For ( typeof ( Student ) )
@@ -129,6 +132,9 @@ public void AllowToSetLimitOnSubqueries()
129132 [ Test ]
130133 public void TestSubcriteriaBeingNull ( )
131134 {
135+ if ( ! TestDialect . SupportsNakedSubqueryInWhereClause )
136+ Assert . Ignore ( Dialect . GetType ( ) . Name + " does not support subqueries in where clause" ) ;
137+
132138 ISession session = OpenSession ( ) ;
133139 ITransaction t = session . BeginTransaction ( ) ;
134140
@@ -205,37 +211,40 @@ public void Subselect()
205211 . Add ( Subqueries . In ( "Gavin King" , dc ) )
206212 . List ( ) ;
207213
208- DetachedCriteria dc2 = DetachedCriteria . For ( typeof ( Student ) , "st" )
209- . Add ( Property . ForName ( "st.StudentNumber" ) . EqProperty ( "e.StudentNumber" ) )
210- . SetProjection ( Property . ForName ( "Name" ) ) ;
214+ if ( TestDialect . SupportsNakedSubqueryInWhereClause )
215+ {
216+ DetachedCriteria dc2 = DetachedCriteria . For ( typeof ( Student ) , "st" )
217+ . Add ( Property . ForName ( "st.StudentNumber" ) . EqProperty ( "e.StudentNumber" ) )
218+ . SetProjection ( Property . ForName ( "Name" ) ) ;
211219
212- session . CreateCriteria ( typeof ( Enrolment ) , "e" )
213- . Add ( Subqueries . Eq ( "Gavin King" , dc2 ) )
214- . List ( ) ;
220+ session . CreateCriteria ( typeof ( Enrolment ) , "e" )
221+ . Add ( Subqueries . Eq ( "Gavin King" , dc2 ) )
222+ . List ( ) ;
215223
216- DetachedCriteria dc3 = DetachedCriteria . For ( typeof ( Student ) , "st" )
217- . CreateCriteria ( "Enrolments" )
218- . CreateCriteria ( "Course" )
219- . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
220- . SetProjection ( Property . ForName ( "st.Name" ) ) ;
224+ DetachedCriteria dc3 = DetachedCriteria . For ( typeof ( Student ) , "st" )
225+ . CreateCriteria ( "Enrolments" )
226+ . CreateCriteria ( "Course" )
227+ . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
228+ . SetProjection ( Property . ForName ( "st.Name" ) ) ;
221229
222- session . CreateCriteria ( typeof ( Enrolment ) , "e" )
223- . Add ( Subqueries . Eq ( "Gavin King" , dc3 ) )
224- . List ( ) ;
230+ session . CreateCriteria ( typeof ( Enrolment ) , "e" )
231+ . Add ( Subqueries . Eq ( "Gavin King" , dc3 ) )
232+ . List ( ) ;
225233
226- DetachedCriteria courseCriteria = DetachedCriteria . For ( typeof ( Course ) )
227- . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
228- . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
234+ DetachedCriteria courseCriteria = DetachedCriteria . For ( typeof ( Course ) )
235+ . Add ( Property . ForName ( "Description" ) . Eq ( "Hibernate Training" ) )
236+ . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
229237
230- DetachedCriteria enrolmentCriteria = DetachedCriteria . For ( typeof ( Enrolment ) )
231- . Add ( Property . ForName ( "CourseCode" ) . Eq ( courseCriteria ) )
232- . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
238+ DetachedCriteria enrolmentCriteria = DetachedCriteria . For ( typeof ( Enrolment ) )
239+ . Add ( Property . ForName ( "CourseCode" ) . Eq ( courseCriteria ) )
240+ . SetProjection ( Projections . Property ( "CourseCode" ) ) ;
233241
234- DetachedCriteria studentCriteria = DetachedCriteria . For ( typeof ( Student ) )
235- . Add ( Subqueries . Exists ( enrolmentCriteria ) ) ;
242+ DetachedCriteria studentCriteria = DetachedCriteria . For ( typeof ( Student ) )
243+ . Add ( Subqueries . Exists ( enrolmentCriteria ) ) ;
236244
237- object result = studentCriteria . GetExecutableCriteria ( session ) . UniqueResult ( ) ;
238- Assert . AreSame ( gavin , result ) ;
245+ object result = studentCriteria . GetExecutableCriteria ( session ) . UniqueResult ( ) ;
246+ Assert . AreSame ( gavin , result ) ;
247+ }
239248
240249 session . Delete ( enrolment2 ) ;
241250 session . Delete ( gavin ) ;
@@ -929,10 +938,13 @@ public void ProjectionsTest()
929938
930939 //s.flush();
931940
932- int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
933- . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) )
934- . UniqueResult ( ) ;
935- Assert . AreEqual ( 2 , count ) ;
941+ if ( TestDialect . SupportsCountDistinct )
942+ {
943+ int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
944+ . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) )
945+ . UniqueResult ( ) ;
946+ Assert . AreEqual ( 2 , count ) ;
947+ }
936948
937949 object obj = s . CreateCriteria ( typeof ( Enrolment ) )
938950 . SetProjection ( Projections . ProjectionList ( )
@@ -1043,17 +1055,20 @@ public void ProjectionsTest()
10431055 . UniqueResult ( ) ;
10441056 Assert . AreEqual ( typeof ( Int64 ) , r . GetType ( ) ) ;
10451057
1046- IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1047- . CreateAlias ( "Student" , "st" )
1048- . CreateAlias ( "Course" , "co" )
1049- . SetProjection ( Projections . ProjectionList ( )
1050- . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1051- . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1052- . Add ( Projections . GroupProperty ( "Year" ) )
1053- )
1054- . List ( ) ;
1058+ if ( TestDialect . SupportsCountDistinct )
1059+ {
1060+ IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1061+ . CreateAlias ( "Student" , "st" )
1062+ . CreateAlias ( "Course" , "co" )
1063+ . SetProjection ( Projections . ProjectionList ( )
1064+ . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1065+ . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1066+ . Add ( Projections . GroupProperty ( "Year" ) )
1067+ )
1068+ . List ( ) ;
10551069
1056- Assert . AreEqual ( 2 , list . Count ) ;
1070+ Assert . AreEqual ( 2 , list . Count ) ;
1071+ }
10571072
10581073 object g = s . CreateCriteria ( typeof ( Student ) )
10591074 . Add ( Expression . IdEq ( 667L ) )
@@ -1113,11 +1128,14 @@ public void CloningProjectionsTest()
11131128
11141129 //s.flush();
11151130
1116- ICriteria criteriaToBeCloned = s . CreateCriteria ( typeof ( Enrolment ) )
1117- . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) ) ;
1118- int count = ( int ) CriteriaTransformer . Clone ( criteriaToBeCloned )
1119- . UniqueResult ( ) ;
1120- Assert . AreEqual ( 2 , count ) ;
1131+ if ( TestDialect . SupportsCountDistinct )
1132+ {
1133+ ICriteria criteriaToBeCloned = s . CreateCriteria ( typeof ( Enrolment ) )
1134+ . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) ) ;
1135+ int count = ( int ) CriteriaTransformer . Clone ( criteriaToBeCloned )
1136+ . UniqueResult ( ) ;
1137+ Assert . AreEqual ( 2 , count ) ;
1138+ }
11211139
11221140 ICriteria criteriaToClone = s . CreateCriteria ( typeof ( Enrolment ) )
11231141 . SetProjection ( Projections . ProjectionList ( )
@@ -1226,18 +1244,21 @@ public void CloningProjectionsTest()
12261244
12271245 Assert . AreEqual ( 7 , array . Length ) ;
12281246
1229- ICriteria criteriaToClone5 = s . CreateCriteria ( typeof ( Enrolment ) )
1230- . CreateAlias ( "Student" , "st" )
1231- . CreateAlias ( "Course" , "co" )
1232- . SetProjection ( Projections . ProjectionList ( )
1233- . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1234- . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1235- . Add ( Projections . GroupProperty ( "Year" ) )
1236- ) ;
1237- IList list = CriteriaTransformer . Clone ( criteriaToClone5 )
1238- . List ( ) ;
1247+ if ( TestDialect . SupportsCountDistinct )
1248+ {
1249+ ICriteria criteriaToClone5 = s . CreateCriteria ( typeof ( Enrolment ) )
1250+ . CreateAlias ( "Student" , "st" )
1251+ . CreateAlias ( "Course" , "co" )
1252+ . SetProjection ( Projections . ProjectionList ( )
1253+ . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1254+ . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1255+ . Add ( Projections . GroupProperty ( "Year" ) )
1256+ ) ;
1257+ IList list = CriteriaTransformer . Clone ( criteriaToClone5 )
1258+ . List ( ) ;
12391259
1240- Assert . AreEqual ( 2 , list . Count ) ;
1260+ Assert . AreEqual ( 2 , list . Count ) ;
1261+ }
12411262
12421263 ICriteria criteriaToClone6 = s . CreateCriteria ( typeof ( Student ) )
12431264 . Add ( Expression . IdEq ( 667L ) )
@@ -1377,13 +1398,17 @@ public void ProjectionsUsingProperty()
13771398 Assert . That ( aResult [ 1 ] , Is . InstanceOf < string > ( ) ) ;
13781399 Assert . That ( aResult [ 2 ] , Is . InstanceOf < CityState > ( ) ) ;
13791400 Assert . That ( aResult [ 3 ] , Is . InstanceOf < Course > ( ) ) ;
1380-
1401+
13811402 // Subtest #5
1382- int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
1383- . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1384- . UniqueResult ( ) ;
1385-
1386- Assert . AreEqual ( 2 , count ) ;
1403+
1404+ if ( TestDialect . SupportsCountDistinct )
1405+ {
1406+ int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
1407+ . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1408+ . UniqueResult ( ) ;
1409+
1410+ Assert . AreEqual ( 2 , count ) ;
1411+ }
13871412
13881413 // Subtest #6
13891414 object obj = s . CreateCriteria ( typeof ( Enrolment ) )
@@ -1518,48 +1543,53 @@ public void ProjectionsUsingProperty()
15181543
15191544 Assert . AreEqual ( 7 , array . Length ) ;
15201545
1521- // Subtest #15
1522- IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1523- . CreateAlias ( "Student" , "st" )
1524- . CreateAlias ( "Course" , "co" )
1525- . SetProjection ( Projections . ProjectionList ( )
1526- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
1527- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1528- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1529- )
1530- . List ( ) ;
1546+ IList list ;
15311547
1532- Assert . AreEqual ( 2 , list . Count ) ;
1548+ if ( TestDialect . SupportsCountDistinct )
1549+ {
1550+ // Subtest #15
1551+ list = s . CreateCriteria ( typeof ( Enrolment ) )
1552+ . CreateAlias ( "Student" , "st" )
1553+ . CreateAlias ( "Course" , "co" )
1554+ . SetProjection ( Projections . ProjectionList ( )
1555+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
1556+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1557+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1558+ )
1559+ . List ( ) ;
15331560
1534- // Subtest #16
1535- list = s . CreateCriteria < Enrolment > ( )
1536- . CreateAlias ( "Student" , "st" )
1537- . CreateAlias ( "Course" , "co" )
1538- . SetProjection ( Projections . ProjectionList ( )
1539- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "courseCode" ) )
1540- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "studentNumber" ) )
1541- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1542- )
1543- . AddOrder ( Order . Asc ( "courseCode" ) )
1544- . AddOrder ( Order . Asc ( "studentNumber" ) )
1545- . List ( ) ;
1561+ Assert . AreEqual ( 2 , list . Count ) ;
1562+
1563+ // Subtest #16
1564+ list = s . CreateCriteria < Enrolment > ( )
1565+ . CreateAlias ( "Student" , "st" )
1566+ . CreateAlias ( "Course" , "co" )
1567+ . SetProjection ( Projections . ProjectionList ( )
1568+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "courseCode" ) )
1569+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "studentNumber" ) )
1570+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1571+ )
1572+ . AddOrder ( Order . Asc ( "courseCode" ) )
1573+ . AddOrder ( Order . Asc ( "studentNumber" ) )
1574+ . List ( ) ;
15461575
1547- Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1576+ Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
15481577
1549- // Subtest #17
1550- list = s . CreateCriteria < Enrolment > ( )
1551- . CreateAlias ( "Student" , "st" )
1552- . CreateAlias ( "Course" , "co" )
1553- . SetProjection ( Projections . ProjectionList ( )
1554- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "cCode" ) )
1555- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "stNumber" ) )
1556- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1557- )
1558- . AddOrder ( Order . Asc ( "cCode" ) )
1559- . AddOrder ( Order . Asc ( "stNumber" ) )
1560- . List ( ) ;
1578+ // Subtest #17
1579+ list = s . CreateCriteria < Enrolment > ( )
1580+ . CreateAlias ( "Student" , "st" )
1581+ . CreateAlias ( "Course" , "co" )
1582+ . SetProjection ( Projections . ProjectionList ( )
1583+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "cCode" ) )
1584+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "stNumber" ) )
1585+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1586+ )
1587+ . AddOrder ( Order . Asc ( "cCode" ) )
1588+ . AddOrder ( Order . Asc ( "stNumber" ) )
1589+ . List ( ) ;
15611590
1562- Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1591+ Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1592+ }
15631593
15641594 s . Delete ( gavin ) ;
15651595 s . Delete ( xam ) ;
@@ -1636,13 +1666,16 @@ public void DistinctProjectionsOfComponents()
16361666 . UniqueResult ( ) ;
16371667
16381668 Assert . That ( result , Is . EqualTo ( 2 ) ) ;
1639-
1640- result = s . CreateCriteria < Student > ( )
1641- . SetProjection ( Projections . CountDistinct ( "CityState.City" ) )
1642- . UniqueResult ( ) ;
1643-
1644- Assert . That ( result , Is . EqualTo ( 1 ) ) ;
1645-
1669+
1670+ if ( TestDialect . SupportsCountDistinct )
1671+ {
1672+ result = s . CreateCriteria < Student > ( )
1673+ . SetProjection ( Projections . CountDistinct ( "CityState.City" ) )
1674+ . UniqueResult ( ) ;
1675+
1676+ Assert . That ( result , Is . EqualTo ( 1 ) ) ;
1677+ }
1678+
16461679 t . Commit ( ) ;
16471680 s . Close ( ) ;
16481681
@@ -1880,11 +1913,13 @@ public void CloningProjectionsUsingProperty()
18801913 s . Save ( enrolment ) ;
18811914 s . Flush ( ) ;
18821915
1883- int count = ( int ) CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
1884- . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1885- )
1886- . UniqueResult ( ) ;
1887- Assert . AreEqual ( 2 , count ) ;
1916+ if ( TestDialect . SupportsCountDistinct )
1917+ {
1918+ int count = ( int ) CriteriaTransformer . Clone (
1919+ s . CreateCriteria ( typeof ( Enrolment ) ) . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1920+ ) . UniqueResult ( ) ;
1921+ Assert . AreEqual ( 2 , count ) ;
1922+ }
18881923
18891924 object obj = CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
18901925 . SetProjection ( Projections . ProjectionList ( )
@@ -2003,18 +2038,22 @@ public void CloningProjectionsUsingProperty()
20032038 . UniqueResult ( ) ;
20042039 Assert . AreEqual ( 7 , array . Length ) ;
20052040
2006- IList list = CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
2007- . CreateAlias ( "Student" , "st" )
2008- . CreateAlias ( "Course" , "co" )
2009- . SetProjection ( Projections . ProjectionList ( )
2010- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
2011- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
2012- . Add ( Property . ForName ( "Year" ) . Group ( ) )
2013- )
2014- )
2015- . List ( ) ;
2041+ if ( TestDialect . SupportsCountDistinct )
2042+ {
2043+ IList list = CriteriaTransformer . Clone (
2044+ s . CreateCriteria ( typeof ( Enrolment ) )
2045+ . CreateAlias ( "Student" , "st" )
2046+ . CreateAlias ( "Course" , "co" )
2047+ . SetProjection (
2048+ Projections . ProjectionList ( )
2049+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
2050+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
2051+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
2052+ )
2053+ ) . List ( ) ;
20162054
2017- Assert . AreEqual ( 2 , list . Count ) ;
2055+ Assert . AreEqual ( 2 , list . Count ) ;
2056+ }
20182057
20192058 s . Delete ( gavin ) ;
20202059 s . Delete ( xam ) ;
0 commit comments