use of lucee.runtime.sql.Selects in project Lucee by lucee.
the class HSQLDBHandler method execute.
/**
* executes a query on the queries inside the cld fusion enviroment
* @param pc Page Context
* @param sql
* @param maxrows
* @return result as Query
* @throws PageException
* @throws PageException
*/
public Query execute(PageContext pc, SQL sql, int maxrows, int fetchsize, TimeSpan timeout) throws PageException {
Stopwatch stopwatch = new Stopwatch(Stopwatch.UNIT_NANO);
stopwatch.start();
String prettySQL = null;
Selects selects = null;
// First Chance
try {
SelectParser parser = new SelectParser();
selects = parser.parse(sql.getSQLString());
Query q = qoq.execute(pc, sql, selects, maxrows);
q.setExecutionTime(stopwatch.time());
return q;
} catch (SQLParserException spe) {
// lucee.print.printST(spe);
// sp
// lucee.print.out("sql parser crash at:");
// lucee.print.out("--------------------------------");
// lucee.print.out(sql.getSQLString().trim());
// lucee.print.out("--------------------------------");
// print.e("1:"+sql.getSQLString());
prettySQL = SQLPrettyfier.prettyfie(sql.getSQLString());
// print.e("2:"+prettySQL);
try {
Query query = executer.execute(pc, sql, prettySQL, maxrows);
query.setExecutionTime(stopwatch.time());
return query;
} catch (PageException ex) {
// lucee.print.printST(ex);
// lucee.print.out("old executor/zql crash at:");
// lucee.print.out("--------------------------------");
// lucee.print.out(sql.getSQLString().trim());
// lucee.print.out("--------------------------------");
}
} catch (PageException e) {
// throw e;
// print.out("new executor crash at:");
// print.out("--------------------------------");
// print.out(sql.getSQLString().trim());
// print.out("--------------------------------");
}
// SECOND Chance with hsqldb
try {
boolean isUnion = false;
Set<String> tables = null;
if (selects != null) {
HSQLUtil2 hsql2 = new HSQLUtil2(selects);
isUnion = hsql2.isUnion();
tables = hsql2.getInvokedTables();
} else {
if (prettySQL == null)
prettySQL = SQLPrettyfier.prettyfie(sql.getSQLString());
HSQLUtil hsql = new HSQLUtil(prettySQL);
tables = hsql.getInvokedTables();
isUnion = hsql.isUnion();
}
String strSQL = StringUtil.replace(sql.getSQLString(), "[", "", false);
strSQL = StringUtil.replace(strSQL, "]", "", false);
sql.setSQLString(strSQL);
return _execute(pc, sql, maxrows, fetchsize, timeout, stopwatch, tables, isUnion);
} catch (ParseException e) {
throw new DatabaseException(e.getMessage(), null, sql, null);
}
}
use of lucee.runtime.sql.Selects in project Lucee by lucee.
the class QoQ method execute.
public Query execute(PageContext pc, SQL sql, int maxrows) throws PageException {
try {
SelectParser parser = new SelectParser();
Selects selects = parser.parse(sql.getSQLString());
return execute(pc, sql, selects, maxrows);
} catch (Throwable t) {
throw Caster.toPageException(t);
}
}
Aggregations