private boolean isMultiTable() { // should be safe to only ever expect EntityPersister references here return fromElement.getQueryable() != null && fromElement.getQueryable().isMultiTable(); }
private TypeDiscriminatorMetadata buildTypeDiscriminatorMetadata() { final String aliasToUse = getTableAlias(); Queryable queryable = getQueryable(); if ( queryable == null ) { QueryableCollection collection = getQueryableCollection(); if ( ! collection.getElementType().isEntityType() ) { throw new QueryException( "type discrimination cannot be applied to value collection [" + collection.getRole() + "]" ); } queryable = (Queryable) collection.getElementPersister(); } handlePropertyBeingDereferenced( getDataType(), DISCRIMINATOR_PROPERTY_NAME ); return new TypeDiscriminatorMetadataImpl( queryable.getTypeDiscriminatorMetadata(), aliasToUse ); }
private String extractTableName() { // should be safe to only ever expect EntityPersister references here return fromElement.getQueryable().getTableName(); }
Queryable persister = getQueryable(); if ( persister != null ) { try {
public String getTableName() { Queryable queryable = getQueryable(); return ( queryable != null ) ? queryable.getTableName() : "{none}"; }
@Override protected void evaluateAssignment(AST eq) throws SemanticException { prepareLogicOperator( eq ); Queryable persister = getCurrentFromClause().getFromElement().getQueryable(); evaluateAssignment( eq, persister, -1 ); }
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new TableBasedUpdateHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ) { @Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { if ( afterUseAction == AfterUseAction.NONE ) { return; } // clean up our id-table rows cleanUpRows( getIdTableInfo( persister ).getQualifiedIdTableName(), session ); } }; }
@Override public DeleteHandler buildDeleteHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final DeleteStatement updateStatement = (DeleteStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new TableBasedDeleteHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ) { @Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { if ( afterUseAction == AfterUseAction.NONE ) { return; } // clean up our id-table rows cleanUpRows( getIdTableInfo( persister ).getQualifiedIdTableName(), session ); } }; } }
@Override public DeleteHandler buildDeleteHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final DeleteStatement updateStatement = (DeleteStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new DeleteHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ); }
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new UpdateHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ); }
private void prepareAnyImplicitJoins(DotNode dotNode) throws SemanticException { if ( dotNode.getLhs() instanceof DotNode ) { DotNode lhs = (DotNode) dotNode.getLhs(); FromElement lhsOrigin = lhs.getFromElement(); if ( lhsOrigin != null && "".equals( lhsOrigin.getText() ) ) { String lhsOriginText = lhsOrigin.getQueryable().getTableName() + " " + lhsOrigin.getTableAlias(); lhsOrigin.setText( lhsOriginText ); } prepareAnyImplicitJoins( lhs ); } }
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); final IdTableInfoImpl tableInfo = getIdTableInfo( targetedPersister ); return new TableBasedUpdateHandlerImpl( factory, walker, tableInfo ) { @Override protected void prepareForUse(Queryable persister, SharedSessionContractImplementor session) { Helper.INSTANCE.createTempTable( tableInfo, ddlTransactionHandling, session ); } @Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { Helper.INSTANCE.releaseTempTable( tableInfo, afterUseAction, ddlTransactionHandling, session ); } }; }
@Override public DeleteHandler buildDeleteHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final DeleteStatement updateStatement = (DeleteStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); final IdTableInfoImpl tableInfo = getIdTableInfo( targetedPersister ); return new TableBasedDeleteHandlerImpl( factory, walker, tableInfo ) { @Override protected void prepareForUse(Queryable persister, SharedSessionContractImplementor session) { Helper.INSTANCE.createTempTable( tableInfo, ddlTransactionHandling, session ); } @Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { Helper.INSTANCE.releaseTempTable( tableInfo, afterUseAction, ddlTransactionHandling, session ); } }; }
protected void postProcessDML(RestrictableStatement statement) throws SemanticException { statement.getFromClause().resolve(); FromElement fromElement = (FromElement) statement.getFromClause().getFromElements().get( 0 ); Queryable persister = fromElement.getQueryable(); // Make #@%$^#^&# sure no alias is applied to the table name fromElement.setText( persister.getTableName() ); // // append any filter fragments; the EMPTY_MAP is used under the assumption that // // currently enabled filters should not affect this process // if ( persister.getDiscriminatorType() != null ) { // new SyntheticAndFactory( getASTFactory() ).addDiscriminatorWhereFragment( // statement, // persister, // java.util.Collections.EMPTY_MAP, // fromElement.getTableAlias() // ); // } if ( persister.getDiscriminatorType() != null || !queryTranslatorImpl.getEnabledFilters().isEmpty() ) { new SyntheticAndFactory( this ).addDiscriminatorWhereFragment( statement, persister, queryTranslatorImpl.getEnabledFilters(), fromElement.getTableAlias() ); } }
public AbstractIdsBulkIdHandler( SessionFactoryImplementor sessionFactory, HqlSqlWalker walker) { super(sessionFactory, walker); final AbstractRestrictableStatement statement = (AbstractRestrictableStatement) walker.getAST(); final FromElement fromElement = statement.getFromClause().getFromElement(); this.targetedPersister = fromElement.getQueryable(); final ProcessedWhereClause processedWhereClause = processWhereClause( statement.getWhereClause() ); this.idSelectParameterSpecifications = processedWhereClause.getIdSelectParameterSpecifications(); final String bulkTargetAlias = fromElement.getTableAlias(); this.idSelect = generateIdSelect( bulkTargetAlias, processedWhereClause ).toStatementString(); }
if ( primaryOrdering != null ) { String [] idColNames = owner.getQueryable().getIdentifierColumnNames(); String expectedPrimaryOrderSeq = String.join( ", ",
if ( walker.getStatementType() == HqlSqlTokenTypes.DELETE ) { final FromElement fromElement = walker.getFinalFromClause().getFromElement(); final Queryable persister = fromElement.getQueryable(); if ( persister.isMultiTable() ) { return new MultiTableDeleteExecutor( walker ); final Queryable persister = fromElement.getQueryable(); if ( persister.isMultiTable() ) {
private DereferenceType resolveAsNakedPropertyRef() { FromElement fromElement = locateSingleFromElement(); if (fromElement == null) { return DereferenceType.UNKNOWN; } Queryable persister = fromElement.getQueryable(); if (persister == null) { return DereferenceType.UNKNOWN; } Type propertyType = getNakedPropertyType(fromElement); if (propertyType == null) { // assume this ident's text does *not* refer to a property on the given persister return DereferenceType.UNKNOWN; } if ((propertyType.isComponentType() || propertyType.isAssociationType() )) { return DereferenceType.COMPONENT_REF; } setFromElement(fromElement); String property = getText(); String[] columns = getWalker().isSelectStatement() ? persister.toColumns(fromElement.getTableAlias(), property) : persister.toColumns(property); String text = String.join(", ", columns); setText(columns.length == 1 ? text : "(" + text + ")"); setType(SqlTokenTypes.SQL_TOKEN); // these pieces are needed for usage in select clause super.setDataType(propertyType); nakedPropertyRef = true; return DereferenceType.PROPERTY_REF; }
FromElement fromElement = deleteStatement.getFromClause().getFromElement(); this.targetedPersister = fromElement.getQueryable(); final String bulkTargetAlias = fromElement.getTableAlias();
if ( versioned != null ) { Queryable persister = fromClause.getFromElement().getQueryable(); if ( !persister.isVersioned() ) { throw new SemanticException( "increment option specified for update of non-versioned entity" );