public synchronized void getSelect()

in empire-db/src/main/java/org/apache/empire/dbms/oracle/DBCommandOracle.java [160:223]


    public synchronized void getSelect(DBSQLBuilder sql)
    {        
        resetParamUsage();
        if (select == null)
            throw new ObjectNotValidException(this);
        // limit rows
        boolean usePreparedStatements = isPreparedStatementsEnabled();
        if (limitRows>=0)
        {   // add limitRows and skipRows wrapper
            sql.append("SELECT * FROM (");
            if (skipRows>0)
                sql.append("SELECT row_.*, rownum rownum_ FROM (");
        }
        // Prepares statement
        sql.append("SELECT ");
        if (StringUtils.isNotEmpty(optimizerHint))
        {   // Append an optimizer hint to the select statement e.g. SELECT /*+ RULE */
            sql.append("/*+ ").append(optimizerHint).append(" */ ");
        }
        if (selectDistinct)
            sql.append("DISTINCT ");
        // Add Select Expressions
        addListExpr(sql, select, CTX_ALL, ", ");
        // Join
        addFrom(sql);
        // Where
        addWhere(sql);
        // Connect By
        if (connectBy != null)
        {   // Add 'Connect By Prior' Expression
        	sql.append("\r\nCONNECT BY PRIOR ");
            connectBy.addSQL(sql, CTX_DEFAULT | CTX_NOPARENTHESIS);
            // Start With
            if (startWith != null)
            {	// Add 'Start With' Expression
            	sql.append("\r\nSTART WITH ");
                startWith.addSQL(sql, CTX_DEFAULT);
            }
        }
        // Grouping
        addGrouping(sql);
        // Order
        if (orderBy != null)
        { // Having
            if (connectBy != null)
                sql.append("\r\nORDER SIBLINGS BY ");
            else
                sql.append("\r\nORDER BY ");
            // Add List of Order By Expressions
            addListExpr(sql, orderBy, CTX_DEFAULT, ", ");
        }
        // limit rows end
        if (limitRows>=0)
        {   // add limitRows and skipRows constraints
            sql.append(") row_ WHERE rownum<=");
            sql.append(usePreparedStatements ? "?" : String.valueOf(skipRows+limitRows));
            if (skipRows>0)
            {   // add skip rows
                sql.append(") WHERE rownum_>");
                sql.append(usePreparedStatements ? "?" : String.valueOf(skipRows));
            }
        }
        completeParamUsage();
    }