|
25 | 25 | import org.hibernate.sql.ast.tree.from.DerivedTableReference; |
26 | 26 | import org.hibernate.sql.ast.tree.from.NamedTableReference; |
27 | 27 | import org.hibernate.sql.ast.tree.from.QueryPartTableReference; |
28 | | -import org.hibernate.sql.ast.tree.from.TableReference; |
29 | 28 | import org.hibernate.sql.ast.tree.insert.ConflictClause; |
30 | 29 | import org.hibernate.sql.ast.tree.insert.InsertSelectStatement; |
31 | 30 | import org.hibernate.sql.ast.tree.predicate.BooleanExpressionPredicate; |
@@ -118,9 +117,7 @@ protected void renderDeleteClause(DeleteStatement statement) { |
118 | 117 | final Stack<Clause> clauseStack = getClauseStack(); |
119 | 118 | try { |
120 | 119 | clauseStack.push( Clause.DELETE ); |
121 | | - if ( supportsDeleteTableVariable() ) { |
122 | | - renderTableReferenceIdentificationVariable( statement.getTargetTable() ); |
123 | | - } |
| 120 | + renderTableReferenceIdentificationVariable( statement.getTargetTable() ); |
124 | 121 | if ( statement.getFromClause().getRoots().isEmpty() ) { |
125 | 122 | appendSql( " from " ); |
126 | 123 | renderDmlTargetTableExpression( statement.getTargetTable() ); |
@@ -148,28 +145,11 @@ protected void renderUpdateClause(UpdateStatement updateStatement) { |
148 | 145 | @Override |
149 | 146 | protected void renderDmlTargetTableExpression(NamedTableReference tableReference) { |
150 | 147 | super.renderDmlTargetTableExpression( tableReference ); |
151 | | - final Clause currentClause = getClauseStack().getCurrent(); |
152 | | - if ( getClauseStack().getCurrent() != Clause.INSERT |
153 | | - && (currentClause != Clause.DELETE || supportsDeleteTableVariable()) ) { |
| 148 | + if ( getClauseStack().getCurrent() != Clause.INSERT ) { |
154 | 149 | renderTableReferenceIdentificationVariable( tableReference ); |
155 | 150 | } |
156 | 151 | } |
157 | 152 |
|
158 | | - @Override |
159 | | - protected void renderTableReferenceIdentificationVariable(TableReference tableReference) { |
160 | | - final Stack<Clause> clauseStack = getCurrentClauseStack(); |
161 | | - if ( clauseStack.getCurrent() == Clause.FROM && clauseStack.depth() > 1 |
162 | | - && clauseStack.peek( 1 ) == Clause.DELETE && !supportsDeleteTableVariable() ) { |
163 | | - return; |
164 | | - } |
165 | | - super.renderTableReferenceIdentificationVariable( tableReference ); |
166 | | - } |
167 | | - |
168 | | - private boolean supportsDeleteTableVariable() { |
169 | | - // Until 11.6, a DELETE statement doesn't support aliasing tables |
170 | | - return getDialect().getVersion().isSameOrAfter( 11, 6 ); |
171 | | - } |
172 | | - |
173 | 153 | @Override |
174 | 154 | protected JdbcOperationQueryInsert translateInsert(InsertSelectStatement sqlAst) { |
175 | 155 | visitInsertStatement( sqlAst ); |
@@ -198,10 +178,7 @@ protected String determineColumnReferenceQualifier(ColumnReference columnReferen |
198 | 178 | || !( getCurrentDmlStatement() instanceof InsertSelectStatement insertSelectStatement ) |
199 | 179 | || ( dmlAlias = insertSelectStatement.getTargetTable().getIdentificationVariable() ) == null |
200 | 180 | || !dmlAlias.equals( columnReference.getQualifier() ) ) { |
201 | | - return !supportsDeleteTableVariable() && getCurrentDmlStatement() instanceof DeleteStatement statement |
202 | | - && statement.getTargetTable().getIdentificationVariable().equals( columnReference.getQualifier() ) |
203 | | - ? getCurrentDmlStatement().getTargetTable().getTableExpression() |
204 | | - : columnReference.getQualifier(); |
| 181 | + return columnReference.getQualifier(); |
205 | 182 | } |
206 | 183 | // Qualify the column reference with the table expression also when in subqueries |
207 | 184 | else if ( qualifierSupport != DmlTargetColumnQualifierSupport.NONE || !getQueryPartStack().isEmpty() ) { |
|
0 commit comments