@@ -112,6 +112,9 @@ public void ScrollCriteria()
112112 [ Test ]
113113 public void AllowToSetLimitOnSubqueries ( )
114114 {
115+ if ( ! Dialect . SupportsScalarSubSelects )
116+ Assert . Ignore ( Dialect . GetType ( ) . Name + " does not support scalar sub-queries" ) ;
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 ( ! Dialect . SupportsScalarSubSelects )
136+ Assert . Ignore ( Dialect . GetType ( ) . Name + " does not support scalar sub-queries" ) ;
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 ( Dialect . SupportsScalarSubSelects )
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 ) ;
@@ -935,10 +944,13 @@ public void ProjectionsTest()
935944
936945 //s.flush();
937946
938- int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
939- . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) )
940- . UniqueResult ( ) ;
941- Assert . AreEqual ( 2 , count ) ;
947+ if ( TestDialect . SupportsCountDistinct )
948+ {
949+ int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
950+ . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) )
951+ . UniqueResult ( ) ;
952+ Assert . AreEqual ( 2 , count ) ;
953+ }
942954
943955 object obj = s . CreateCriteria ( typeof ( Enrolment ) )
944956 . SetProjection ( Projections . ProjectionList ( )
@@ -1049,17 +1061,20 @@ public void ProjectionsTest()
10491061 . UniqueResult ( ) ;
10501062 Assert . AreEqual ( typeof ( Int64 ) , r . GetType ( ) ) ;
10511063
1052- IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1053- . CreateAlias ( "Student" , "st" )
1054- . CreateAlias ( "Course" , "co" )
1055- . SetProjection ( Projections . ProjectionList ( )
1056- . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1057- . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1058- . Add ( Projections . GroupProperty ( "Year" ) )
1059- )
1060- . List ( ) ;
1064+ if ( TestDialect . SupportsCountDistinct )
1065+ {
1066+ IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1067+ . CreateAlias ( "Student" , "st" )
1068+ . CreateAlias ( "Course" , "co" )
1069+ . SetProjection ( Projections . ProjectionList ( )
1070+ . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1071+ . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1072+ . Add ( Projections . GroupProperty ( "Year" ) )
1073+ )
1074+ . List ( ) ;
10611075
1062- Assert . AreEqual ( 2 , list . Count ) ;
1076+ Assert . AreEqual ( 2 , list . Count ) ;
1077+ }
10631078
10641079 object g = s . CreateCriteria ( typeof ( Student ) )
10651080 . Add ( Expression . IdEq ( 667L ) )
@@ -1119,11 +1134,14 @@ public void CloningProjectionsTest()
11191134
11201135 //s.flush();
11211136
1122- ICriteria criteriaToBeCloned = s . CreateCriteria ( typeof ( Enrolment ) )
1123- . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) ) ;
1124- int count = ( int ) CriteriaTransformer . Clone ( criteriaToBeCloned )
1125- . UniqueResult ( ) ;
1126- Assert . AreEqual ( 2 , count ) ;
1137+ if ( TestDialect . SupportsCountDistinct )
1138+ {
1139+ ICriteria criteriaToBeCloned = s . CreateCriteria ( typeof ( Enrolment ) )
1140+ . SetProjection ( Projections . Count ( "StudentNumber" ) . SetDistinct ( ) ) ;
1141+ int count = ( int ) CriteriaTransformer . Clone ( criteriaToBeCloned )
1142+ . UniqueResult ( ) ;
1143+ Assert . AreEqual ( 2 , count ) ;
1144+ }
11271145
11281146 ICriteria criteriaToClone = s . CreateCriteria ( typeof ( Enrolment ) )
11291147 . SetProjection ( Projections . ProjectionList ( )
@@ -1232,18 +1250,21 @@ public void CloningProjectionsTest()
12321250
12331251 Assert . AreEqual ( 7 , array . Length ) ;
12341252
1235- ICriteria criteriaToClone5 = s . CreateCriteria ( typeof ( Enrolment ) )
1236- . CreateAlias ( "Student" , "st" )
1237- . CreateAlias ( "Course" , "co" )
1238- . SetProjection ( Projections . ProjectionList ( )
1239- . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1240- . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1241- . Add ( Projections . GroupProperty ( "Year" ) )
1242- ) ;
1243- IList list = CriteriaTransformer . Clone ( criteriaToClone5 )
1244- . List ( ) ;
1253+ if ( TestDialect . SupportsCountDistinct )
1254+ {
1255+ ICriteria criteriaToClone5 = s . CreateCriteria ( typeof ( Enrolment ) )
1256+ . CreateAlias ( "Student" , "st" )
1257+ . CreateAlias ( "Course" , "co" )
1258+ . SetProjection ( Projections . ProjectionList ( )
1259+ . Add ( Projections . GroupProperty ( "co.CourseCode" ) )
1260+ . Add ( Projections . Count ( "st.StudentNumber" ) . SetDistinct ( ) )
1261+ . Add ( Projections . GroupProperty ( "Year" ) )
1262+ ) ;
1263+ IList list = CriteriaTransformer . Clone ( criteriaToClone5 )
1264+ . List ( ) ;
12451265
1246- Assert . AreEqual ( 2 , list . Count ) ;
1266+ Assert . AreEqual ( 2 , list . Count ) ;
1267+ }
12471268
12481269 ICriteria criteriaToClone6 = s . CreateCriteria ( typeof ( Student ) )
12491270 . Add ( Expression . IdEq ( 667L ) )
@@ -1383,13 +1404,17 @@ public void ProjectionsUsingProperty()
13831404 Assert . That ( aResult [ 1 ] , Is . InstanceOf < string > ( ) ) ;
13841405 Assert . That ( aResult [ 2 ] , Is . InstanceOf < CityState > ( ) ) ;
13851406 Assert . That ( aResult [ 3 ] , Is . InstanceOf < Course > ( ) ) ;
1386-
1407+
13871408 // Subtest #5
1388- int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
1389- . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1390- . UniqueResult ( ) ;
1391-
1392- Assert . AreEqual ( 2 , count ) ;
1409+
1410+ if ( TestDialect . SupportsCountDistinct )
1411+ {
1412+ int count = ( int ) s . CreateCriteria ( typeof ( Enrolment ) )
1413+ . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1414+ . UniqueResult ( ) ;
1415+
1416+ Assert . AreEqual ( 2 , count ) ;
1417+ }
13931418
13941419 // Subtest #6
13951420 object obj = s . CreateCriteria ( typeof ( Enrolment ) )
@@ -1524,48 +1549,53 @@ public void ProjectionsUsingProperty()
15241549
15251550 Assert . AreEqual ( 7 , array . Length ) ;
15261551
1527- // Subtest #15
1528- IList list = s . CreateCriteria ( typeof ( Enrolment ) )
1529- . CreateAlias ( "Student" , "st" )
1530- . CreateAlias ( "Course" , "co" )
1531- . SetProjection ( Projections . ProjectionList ( )
1532- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
1533- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1534- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1535- )
1536- . List ( ) ;
1552+ IList list ;
15371553
1538- Assert . AreEqual ( 2 , list . Count ) ;
1554+ if ( TestDialect . SupportsCountDistinct )
1555+ {
1556+ // Subtest #15
1557+ list = s . CreateCriteria ( typeof ( Enrolment ) )
1558+ . CreateAlias ( "Student" , "st" )
1559+ . CreateAlias ( "Course" , "co" )
1560+ . SetProjection ( Projections . ProjectionList ( )
1561+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
1562+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1563+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1564+ )
1565+ . List ( ) ;
15391566
1540- // Subtest #16
1541- list = s . CreateCriteria < Enrolment > ( )
1542- . CreateAlias ( "Student" , "st" )
1543- . CreateAlias ( "Course" , "co" )
1544- . SetProjection ( Projections . ProjectionList ( )
1545- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "courseCode" ) )
1546- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "studentNumber" ) )
1547- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1548- )
1549- . AddOrder ( Order . Asc ( "courseCode" ) )
1550- . AddOrder ( Order . Asc ( "studentNumber" ) )
1551- . List ( ) ;
1567+ Assert . AreEqual ( 2 , list . Count ) ;
1568+
1569+ // Subtest #16
1570+ list = s . CreateCriteria < Enrolment > ( )
1571+ . CreateAlias ( "Student" , "st" )
1572+ . CreateAlias ( "Course" , "co" )
1573+ . SetProjection ( Projections . ProjectionList ( )
1574+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "courseCode" ) )
1575+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "studentNumber" ) )
1576+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1577+ )
1578+ . AddOrder ( Order . Asc ( "courseCode" ) )
1579+ . AddOrder ( Order . Asc ( "studentNumber" ) )
1580+ . List ( ) ;
15521581
1553- Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1582+ Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
15541583
1555- // Subtest #17
1556- list = s . CreateCriteria < Enrolment > ( )
1557- . CreateAlias ( "Student" , "st" )
1558- . CreateAlias ( "Course" , "co" )
1559- . SetProjection ( Projections . ProjectionList ( )
1560- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "cCode" ) )
1561- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "stNumber" ) )
1562- . Add ( Property . ForName ( "Year" ) . Group ( ) )
1563- )
1564- . AddOrder ( Order . Asc ( "cCode" ) )
1565- . AddOrder ( Order . Asc ( "stNumber" ) )
1566- . List ( ) ;
1584+ // Subtest #17
1585+ list = s . CreateCriteria < Enrolment > ( )
1586+ . CreateAlias ( "Student" , "st" )
1587+ . CreateAlias ( "Course" , "co" )
1588+ . SetProjection ( Projections . ProjectionList ( )
1589+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) . As ( "cCode" ) )
1590+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) . As ( "stNumber" ) )
1591+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
1592+ )
1593+ . AddOrder ( Order . Asc ( "cCode" ) )
1594+ . AddOrder ( Order . Asc ( "stNumber" ) )
1595+ . List ( ) ;
15671596
1568- Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1597+ Assert . That ( list . Count , Is . EqualTo ( 2 ) ) ;
1598+ }
15691599
15701600 s . Delete ( gavin ) ;
15711601 s . Delete ( xam ) ;
@@ -1642,13 +1672,16 @@ public void DistinctProjectionsOfComponents()
16421672 . UniqueResult ( ) ;
16431673
16441674 Assert . That ( result , Is . EqualTo ( 2 ) ) ;
1645-
1646- result = s . CreateCriteria < Student > ( )
1647- . SetProjection ( Projections . CountDistinct ( "CityState.City" ) )
1648- . UniqueResult ( ) ;
1649-
1650- Assert . That ( result , Is . EqualTo ( 1 ) ) ;
1651-
1675+
1676+ if ( TestDialect . SupportsCountDistinct )
1677+ {
1678+ result = s . CreateCriteria < Student > ( )
1679+ . SetProjection ( Projections . CountDistinct ( "CityState.City" ) )
1680+ . UniqueResult ( ) ;
1681+
1682+ Assert . That ( result , Is . EqualTo ( 1 ) ) ;
1683+ }
1684+
16521685 t . Commit ( ) ;
16531686 s . Close ( ) ;
16541687
@@ -1886,11 +1919,13 @@ public void CloningProjectionsUsingProperty()
18861919 s . Save ( enrolment ) ;
18871920 s . Flush ( ) ;
18881921
1889- int count = ( int ) CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
1890- . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1891- )
1892- . UniqueResult ( ) ;
1893- Assert . AreEqual ( 2 , count ) ;
1922+ if ( TestDialect . SupportsCountDistinct )
1923+ {
1924+ int count = ( int ) CriteriaTransformer . Clone (
1925+ s . CreateCriteria ( typeof ( Enrolment ) ) . SetProjection ( Property . ForName ( "StudentNumber" ) . Count ( ) . SetDistinct ( ) )
1926+ ) . UniqueResult ( ) ;
1927+ Assert . AreEqual ( 2 , count ) ;
1928+ }
18941929
18951930 object obj = CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
18961931 . SetProjection ( Projections . ProjectionList ( )
@@ -2009,18 +2044,22 @@ public void CloningProjectionsUsingProperty()
20092044 . UniqueResult ( ) ;
20102045 Assert . AreEqual ( 7 , array . Length ) ;
20112046
2012- IList list = CriteriaTransformer . Clone ( s . CreateCriteria ( typeof ( Enrolment ) )
2013- . CreateAlias ( "Student" , "st" )
2014- . CreateAlias ( "Course" , "co" )
2015- . SetProjection ( Projections . ProjectionList ( )
2016- . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
2017- . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
2018- . Add ( Property . ForName ( "Year" ) . Group ( ) )
2019- )
2020- )
2021- . List ( ) ;
2047+ if ( TestDialect . SupportsCountDistinct )
2048+ {
2049+ IList list = CriteriaTransformer . Clone (
2050+ s . CreateCriteria ( typeof ( Enrolment ) )
2051+ . CreateAlias ( "Student" , "st" )
2052+ . CreateAlias ( "Course" , "co" )
2053+ . SetProjection (
2054+ Projections . ProjectionList ( )
2055+ . Add ( Property . ForName ( "co.CourseCode" ) . Group ( ) )
2056+ . Add ( Property . ForName ( "st.StudentNumber" ) . Count ( ) . SetDistinct ( ) )
2057+ . Add ( Property . ForName ( "Year" ) . Group ( ) )
2058+ )
2059+ ) . List ( ) ;
20222060
2023- Assert . AreEqual ( 2 , list . Count ) ;
2061+ Assert . AreEqual ( 2 , list . Count ) ;
2062+ }
20242063
20252064 s . Delete ( gavin ) ;
20262065 s . Delete ( xam ) ;
0 commit comments