Skip to content

Commit 46c9978

Browse files
committed
HHH-19260 - Move supportsRecursiveCycleClause() from AbstractSqlAstTranslator to Dialect
Signed-off-by: Jan Schatteman <[email protected]>
1 parent 67ffa57 commit 46c9978

File tree

10 files changed

+36
-36
lines changed

10 files changed

+36
-36
lines changed

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/OracleLegacyDialect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,4 +1670,9 @@ public boolean supportsNestedSubqueryCorrelation() {
16701670
return false;
16711671
}
16721672

1673+
@Override
1674+
public boolean supportsRecursiveCycleClause() {
1675+
return true;
1676+
}
1677+
16731678
}

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/OracleLegacySqlAstTranslator.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,6 @@ protected boolean supportsRecursiveSearchClause() {
138138
return true;
139139
}
140140

141-
@Override
142-
protected boolean supportsRecursiveCycleClause() {
143-
return true;
144-
}
145-
146141
@Override
147142
public void visitSqlSelection(SqlSelection sqlSelection) {
148143
if ( getCurrentCteStatement() != null ) {

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacyDialect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1631,4 +1631,9 @@ public boolean supportsArrayConstructor() {
16311631
return true;
16321632
}
16331633

1634+
@Override
1635+
public boolean supportsRecursiveCycleClause() {
1636+
return getVersion().isSameOrAfter( 14 );
1637+
}
1638+
16341639
}

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacySqlAstTranslator.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,6 @@ protected boolean supportsRecursiveSearchClause() {
240240
return getDialect().getVersion().isSameOrAfter( 14 );
241241
}
242242

243-
@Override
244-
protected boolean supportsRecursiveCycleClause() {
245-
return getDialect().getVersion().isSameOrAfter( 14 );
246-
}
247-
248243
@Override
249244
protected boolean supportsRecursiveCycleUsingClause() {
250245
return getDialect().getVersion().isSameOrAfter( 14 );

hibernate-core/src/main/java/org/hibernate/dialect/Dialect.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5930,4 +5930,11 @@ public boolean supportsNestedSubqueryCorrelation() {
59305930
return true;
59315931
}
59325932

5933+
/**
5934+
* Whether the SQL cycle clause is supported, which can be used for recursive CTEs.
5935+
*/
5936+
public boolean supportsRecursiveCycleClause() {
5937+
return false;
5938+
}
5939+
59335940
}

hibernate-core/src/main/java/org/hibernate/dialect/OracleDialect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,4 +1751,9 @@ public boolean supportsNestedSubqueryCorrelation() {
17511751
return false;
17521752
}
17531753

1754+
@Override
1755+
public boolean supportsRecursiveCycleClause() {
1756+
return true;
1757+
}
1758+
17541759
}

hibernate-core/src/main/java/org/hibernate/dialect/OracleSqlAstTranslator.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,6 @@ protected boolean supportsRecursiveSearchClause() {
148148
return true;
149149
}
150150

151-
@Override
152-
protected boolean supportsRecursiveCycleClause() {
153-
return true;
154-
}
155-
156151
@Override
157152
public void visitSqlSelection(SqlSelection sqlSelection) {
158153
if ( getCurrentCteStatement() != null ) {

hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQLDialect.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,4 +1629,9 @@ public boolean supportsArrayConstructor() {
16291629
return true;
16301630
}
16311631

1632+
@Override
1633+
public boolean supportsRecursiveCycleClause() {
1634+
return getVersion().isSameOrAfter( 14 );
1635+
}
1636+
16321637
}

hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQLSqlAstTranslator.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -242,11 +242,6 @@ protected boolean supportsRecursiveSearchClause() {
242242
return getDialect().getVersion().isSameOrAfter( 14 );
243243
}
244244

245-
@Override
246-
protected boolean supportsRecursiveCycleClause() {
247-
return getDialect().getVersion().isSameOrAfter( 14 );
248-
}
249-
250245
@Override
251246
protected boolean supportsRecursiveCycleUsingClause() {
252247
return getDialect().getVersion().isSameOrAfter( 14 );

hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,13 +2330,13 @@ protected void renderCteColumns(CteStatement cte) {
23302330
appendSql( cte.getSearchColumn().getColumnExpression() );
23312331
}
23322332
}
2333-
if ( !supportsRecursiveCycleClause() ) {
2333+
if ( !dialect.supportsRecursiveCycleClause() ) {
23342334
if ( cte.getCycleMarkColumn() != null ) {
23352335
appendSql( COMMA_SEPARATOR );
23362336
appendSql( cte.getCycleMarkColumn().getColumnExpression() );
23372337
}
23382338
}
2339-
if ( cte.getCycleMarkColumn() != null && !supportsRecursiveCycleClause()
2339+
if ( cte.getCycleMarkColumn() != null && !dialect.supportsRecursiveCycleClause()
23402340
|| cte.getCyclePathColumn() != null && !supportsRecursiveCycleUsingClause() ) {
23412341
appendSql( COMMA_SEPARATOR );
23422342
appendSql( determineCyclePathColumnName( cte ) );
@@ -2474,13 +2474,6 @@ protected boolean supportsRecursiveSearchClause() {
24742474
return false;
24752475
}
24762476

2477-
/**
2478-
* Whether the SQL cycle clause is supported, which can be used for recursive CTEs.
2479-
*/
2480-
protected boolean supportsRecursiveCycleClause() {
2481-
return false;
2482-
}
2483-
24842477
/**
24852478
* Whether the SQL cycle clause supports the using sub-clause.
24862479
*/
@@ -2553,7 +2546,7 @@ else if ( renderNullPrecedence ) {
25532546
}
25542547

25552548
protected void renderCycleClause(CteStatement cte) {
2556-
if ( supportsRecursiveCycleClause() ) {
2549+
if ( dialect.supportsRecursiveCycleClause() ) {
25572550
renderStandardCycleClause( cte );
25582551
}
25592552
}
@@ -2592,7 +2585,7 @@ protected void renderRecursiveCteVirtualSelections(SelectClause selectClause) {
25922585
emulateSearchClauseOrderWithString( selectClause );
25932586
}
25942587
}
2595-
if ( !supportsRecursiveCycleClause() || currentCteStatement.getCyclePathColumn() != null && !supportsRecursiveCycleUsingClause() ) {
2588+
if ( !dialect.supportsRecursiveCycleClause() || currentCteStatement.getCyclePathColumn() != null && !supportsRecursiveCycleUsingClause() ) {
25962589
if ( currentCteStatement.getCycleMarkColumn() != null ) {
25972590
appendSql( COMMA_SEPARATOR );
25982591
if ( supportsRecursiveClauseArrayAndRowEmulation() ) {
@@ -2601,7 +2594,7 @@ protected void renderRecursiveCteVirtualSelections(SelectClause selectClause) {
26012594
else {
26022595
emulateCycleClauseWithString( selectClause );
26032596
}
2604-
if ( !supportsRecursiveCycleClause() && isInRecursiveQueryPart() ) {
2597+
if ( !dialect.supportsRecursiveCycleClause() && isInRecursiveQueryPart() ) {
26052598
final ColumnReference cycleColumnReference = new ColumnReference(
26062599
findTableReferenceByTableId( currentCteStatement.getCteTable().getTableExpression() ),
26072600
currentCteStatement.getCycleMarkColumn().getColumnExpression(),
@@ -2981,7 +2974,7 @@ protected void emulateCycleClauseWithRowAndArray(SelectClause selectClause) {
29812974
stringType
29822975
);
29832976

2984-
if ( !supportsRecursiveCycleClause() ) {
2977+
if ( !dialect.supportsRecursiveCycleClause() ) {
29852978
// Cycle mark
29862979
appendSql( "case when " );
29872980
final String arrayContainsFunction = getArrayContainsFunction();
@@ -3048,7 +3041,7 @@ protected void emulateCycleClauseWithRowAndArray(SelectClause selectClause) {
30483041
appendSql( ']' );
30493042
}
30503043
else {
3051-
if ( !supportsRecursiveCycleClause() ) {
3044+
if ( !dialect.supportsRecursiveCycleClause() ) {
30523045
// Cycle mark
30533046
currentCteStatement.getNoCycleValue().accept( this );
30543047
appendSql( COMMA_SEPARATOR );
@@ -3149,7 +3142,7 @@ private void emulateCycleClauseWithString(SelectClause selectClause) {
31493142
}
31503143
arguments.add( nullSeparator );
31513144

3152-
if ( !supportsRecursiveCycleClause() ) {
3145+
if ( !dialect.supportsRecursiveCycleClause() ) {
31533146
// Cycle mark
31543147
appendSql( "case when " );
31553148
renderStringContainsExactlyPredicate(
@@ -3176,7 +3169,7 @@ private void emulateCycleClauseWithString(SelectClause selectClause) {
31763169
concat.render( this, arguments, stringType, this );
31773170
}
31783171
else {
3179-
if ( !supportsRecursiveCycleClause() ) {
3172+
if ( !dialect.supportsRecursiveCycleClause() ) {
31803173
// Cycle mark
31813174
currentCteStatement.getNoCycleValue().accept( this );
31823175
appendSql( COMMA_SEPARATOR );

0 commit comments

Comments
 (0)