private void initialize(SelectClause selectClause) { List fromElementList = selectClause.getFromElementsForLoad(); hasScalars = selectClause.isScalarSelect(); scalarColumnNames = selectClause.getColumnNames(); queryReturnTypes = selectClause.getQueryReturnTypes(); aggregatedSelectExpression = selectClause.getAggregatedSelectExpression(); queryReturnAliases = selectClause.getQueryReturnAliases(); List collectionFromElements = selectClause.getCollectionFromElements(); if ( collectionFromElements != null && collectionFromElements.size() != 0 ) { int length = collectionFromElements.size();
public boolean isDistinct() { return getFirstChild() != null && getFirstChild().getType() == SqlTokenTypes.DISTINCT; }
SelectExpression[] selectExpressions = collectSelectExpressions(); if ( getParameterPositions().size() > 0 && getWalker().getStatementType() != HqlSqlTokenTypes.INSERT ) { throw new QueryException( "Parameters are only supported in SELECT clauses when used as part of a INSERT INTO DML statement" if ( getWalker().getStatementType() == HqlSqlTokenTypes.INSERT && inSubquery ) { if ( ( (QueryNode) selectExpression ).getSelectClause().getParameterPositions().size() > 0 ) { throw new QueryException( "Use of parameters in subqueries of INSERT INTO DML statements is not supported." if ( isReturnableEntity( selectExpression ) ) { fromElementsForLoad.add( selectExpression.getFromElement() ); initAliases( selectExpressions ); if ( !getWalker().isShallowQuery() ) { ASTAppender appender = new ASTAppender( getASTFactory(), this ); int size = fromElements.size(); addCollectionFromElement( fromElement ); if ( type != null ) { boolean collectionOfElements = fromElement.isCollectionOfValuesOrComponents(); renderNonScalarSelects( collectSelectExpressions(), fromClause ); if ( scalarSelect || getWalker().isShallowQuery() ) {
public void validateTypes(SelectClause selectClause) throws QueryException { Type[] selectTypes = selectClause.getQueryReturnTypes(); if ( selectTypes.length + selectClause.getTotalParameterCount() != types.length ) { throw new QueryException( "number of select types did not match those for insert" ); } int parameterCount = 0; for ( int i = 0; i < types.length; i++ ) { if ( selectClause.getParameterPositions().contains( i ) ) { parameterCount++; } else if ( !areCompatible( types[i], selectTypes[i - parameterCount] ) ) { throw new QueryException( "insertion type [" + types[i] + "] and selection type [" + selectTypes[i - parameterCount] + "] at position " + i + " are not compatible" ); } } // otherwise, everything ok. }
ASTAppender appender = new ASTAppender( getASTFactory(), this ); // Get ready to start adding nodes. int size = fromElements.size(); ArrayList queryReturnTypeList = new ArrayList( size ); Type type = fromElement.getSelectType(); addCollectionFromElement( fromElement ); SelectExpression[] selectExpressions = collectSelectExpressions(); if ( getWalker().isShallowQuery() ) { renderScalarSelects( selectExpressions, fromClause ); renderNonScalarSelects( selectExpressions, fromClause ); finishInitialization( queryReturnTypeList );
private void renderNonScalarSelects(SelectExpression[] selectExpressions, FromClause currentFromClause) throws SemanticException { ASTAppender appender = new ASTAppender( getASTFactory(), this ); final int size = selectExpressions.length; int nonscalarSize = 0; FromElement fromElement = expr.getFromElement(); if ( fromElement != null ) { renderNonScalarIdentifiers( fromElement, nonscalarSize, j, expr, appender ); j++; FromElement fromElement = selectExpressions[i].getFromElement(); if ( fromElement != null ) { renderNonScalarProperties( appender, selectExpressions[i], fromElement, nonscalarSize, k ); k++;
AST originalFirstSelectExprNode = selectClause.getFirstChild(); selectClause.setFirstChild( fragmentNode ); fragmentNode.setNextSibling( originalFirstSelectExprNode ); AST currentFirstSelectExprNode = selectClause.getFirstChild(); selectClause.setFirstChild( versionValueNode ); versionValueNode.setNextSibling( currentFirstSelectExprNode ); String sqlValue = insertStatement.getIntoClause().getQueryable().getDiscriminatorSQLValue(); AST discrimValue = getASTFactory().create( HqlSqlTokenTypes.SQL_TOKEN, sqlValue ); insertStatement.getSelectClause().addChild( discrimValue );
public Type[] getReturnTypes() { return selectClause.getQueryReturnTypes(); }
AST originalFirstSelectExprNode = selectClause.getFirstChild(); selectClause.setFirstChild( fragmentNode ); fragmentNode.setNextSibling( originalFirstSelectExprNode ); AST child = selectClause.getFirstChild(); int i = 0; while ( child != null ) { .getInsertionTypes()[selectClause.getParameterPositions().get( i )] ); i++; AST currentFirstSelectExprNode = selectClause.getFirstChild(); selectClause.setFirstChild( versionValueNode ); versionValueNode.setNextSibling( currentFirstSelectExprNode ); String sqlValue = insertStatement.getIntoClause().getQueryable().getDiscriminatorSQLValue(); AST discrimValue = getASTFactory().create( HqlSqlTokenTypes.SQL_TOKEN, sqlValue ); insertStatement.getSelectClause().addChild( discrimValue );
public OgmQueryLoader(QueryTranslatorImpl queryTranslator, SessionFactoryImplementor factory, SelectClause selectClause, BackendQuery<?> query, List<String> scalarColumns) { super( queryTranslator, factory, selectClause ); this.loaderContext = getLoaderContext( query, factory ); this.hasScalars = selectClause.isScalarSelect(); this.scalarColumns = scalarColumns; this.queryReturnTypes = selectClause.getQueryReturnTypes(); this.typeTranslator = factory.getServiceRegistry().getService( TypeTranslator.class ); }
QueryNode queryNode = getField(translator, "sqlAst"); SelectClause selectClause = queryNode.getSelectClause(); Type[] queryReturnTypes = selectClause.getQueryReturnTypes(); AST selectItem = selectClause.getFirstChild();
public String[] getReturnAliases() { return selectClause.getQueryReturnAliases(); }
ASTAppender appender = new ASTAppender( getASTFactory(), this ); // Get ready to start adding nodes. int size = fromElements.size(); ArrayList queryReturnTypeList = new ArrayList( size ); Type type = fromElement.getSelectType(); addCollectionFromElement( fromElement ); SelectExpression[] selectExpressions = collectSelectExpressions(); if ( getWalker().isShallowQuery() ) { renderScalarSelects( selectExpressions, fromClause ); renderNonScalarSelects( selectExpressions, fromClause ); finishInitialization( queryReturnTypeList );
private void renderNonScalarSelects(SelectExpression[] selectExpressions, FromClause currentFromClause) throws SemanticException { ASTAppender appender = new ASTAppender( getASTFactory(), this ); final int size = selectExpressions.length; int nonscalarSize = 0; FromElement fromElement = expr.getFromElement(); if ( fromElement != null ) { renderNonScalarIdentifiers( fromElement, nonscalarSize, j, expr, appender ); j++; FromElement fromElement = selectExpressions[i].getFromElement(); if ( fromElement != null ) { renderNonScalarProperties( appender, fromElement, nonscalarSize, k ); k++;
AST originalFirstSelectExprNode = selectClause.getFirstChild(); selectClause.setFirstChild( fragmentNode ); fragmentNode.setNextSibling( originalFirstSelectExprNode ); AST currentFirstSelectExprNode = selectClause.getFirstChild(); selectClause.setFirstChild( versionValueNode ); versionValueNode.setNextSibling( currentFirstSelectExprNode ); String sqlValue = insertStatement.getIntoClause().getQueryable().getDiscriminatorSQLValue(); AST discrimValue = getASTFactory().create( HqlSqlTokenTypes.SQL_TOKEN, sqlValue ); insertStatement.getSelectClause().addChild( discrimValue );
public Type[] getReturnTypes() { return selectClause.getQueryReturnTypes(); }
public String[] getReturnAliases() { return selectClause.getQueryReturnAliases(); }
SelectExpression[] selectExpressions = collectSelectExpressions(); if ( isReturnableEntity( selectExpression ) ) { fromElementsForLoad.add( selectExpression.getFromElement() ); initAliases(selectExpressions); if ( !getWalker().isShallowQuery() ) { ASTAppender appender = new ASTAppender( getASTFactory(), this ); // Get ready to start adding nodes. int size = fromElements.size(); addCollectionFromElement( fromElement ); if ( type != null ) { boolean collectionOfElements = fromElement.isCollectionOfValuesOrComponents(); renderNonScalarSelects( collectSelectExpressions(), fromClause ); if ( scalarSelect || getWalker().isShallowQuery() ) { renderScalarSelects( selectExpressions, fromClause ); finishInitialization( /*sqlResultTypeList,*/ queryReturnTypeList );
private void initialize(SelectClause selectClause) { List fromElementList = selectClause.getFromElementsForLoad(); hasScalars = selectClause.isScalarSelect(); scalarColumnNames = selectClause.getColumnNames(); queryReturnTypes = selectClause.getQueryReturnTypes(); aggregatedSelectExpression = selectClause.getAggregatedSelectExpression(); queryReturnAliases = selectClause.getQueryReturnAliases(); List collectionFromElements = selectClause.getCollectionFromElements(); if ( collectionFromElements != null && collectionFromElements.size()!=0 ) { int length = collectionFromElements.size();
ASTAppender appender = new ASTAppender( getASTFactory(), this ); // Get ready to start adding nodes. int size = fromElements.size(); ArrayList queryReturnTypeList = new ArrayList( size ); Type type = fromElement.getSelectType(); addCollectionFromElement( fromElement ); SelectExpression[] selectExpressions = collectSelectExpressions(); if ( getWalker().isShallowQuery() ) { renderScalarSelects( selectExpressions, fromClause ); renderNonScalarSelects( selectExpressions, fromClause ); finishInitialization( queryReturnTypeList );