10
10
11
11
import org .hibernate .engine .spi .SessionFactoryImplementor ;
12
12
import org .hibernate .query .sqm .ComparisonOperator ;
13
+ import org .hibernate .sql .ast .Clause ;
13
14
import org .hibernate .sql .ast .SqlAstNodeRenderingMode ;
14
15
import org .hibernate .sql .ast .spi .AbstractSqlAstTranslator ;
15
16
import org .hibernate .sql .ast .spi .SqlSelection ;
16
17
import org .hibernate .sql .ast .tree .Statement ;
17
- import org .hibernate .sql .ast .tree .cte .CteStatement ;
18
18
import org .hibernate .sql .ast .tree .expression .Expression ;
19
19
import org .hibernate .sql .ast .tree .expression .Literal ;
20
20
import org .hibernate .sql .ast .tree .expression .SqlTuple ;
@@ -35,6 +35,21 @@ public InformixSqlAstTranslator(SessionFactoryImplementor sessionFactory, Statem
35
35
super ( sessionFactory , statement );
36
36
}
37
37
38
+ @ Override
39
+ public void visitSelectClause (SelectClause selectClause ) {
40
+ getClauseStack ().push ( Clause .SELECT );
41
+
42
+ try {
43
+ appendSql ( "select " );
44
+ visitSqlSelections ( selectClause );
45
+ renderVirtualSelections ( selectClause );
46
+ }
47
+ finally {
48
+ getClauseStack ().pop ();
49
+ }
50
+
51
+ }
52
+
38
53
@ Override
39
54
protected void visitSqlSelections (SelectClause selectClause ) {
40
55
if ( supportsSkipFirstClause () ) {
@@ -43,6 +58,9 @@ protected void visitSqlSelections(SelectClause selectClause) {
43
58
else {
44
59
renderFirstClause ( (QuerySpec ) getQueryPartStack ().getCurrent () );
45
60
}
61
+ if ( selectClause .isDistinct () ) {
62
+ appendSql ( "distinct " );
63
+ }
46
64
super .visitSqlSelections ( selectClause );
47
65
}
48
66
0 commit comments