- add api to support the use of database specific paging feature to return a subset of the query result.
This commit is contained in:
parent
904289b63b
commit
d57c61959c
|
|
@ -302,5 +302,20 @@ public interface AdempiereDatabase
|
||||||
*/
|
*/
|
||||||
public final static String DEFAULT_CONN_TEST_SQL = "SELECT Version FROM AD_System";
|
public final static String DEFAULT_CONN_TEST_SQL = "SELECT Version FROM AD_System";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the database have sql extension that return a subset of the query result
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public boolean isPagingSupported();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* modify sql to return a subset of the query result
|
||||||
|
* @param sql
|
||||||
|
* @param start
|
||||||
|
* @param end
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String addPagingSQL(String sql, int start, int end);
|
||||||
|
|
||||||
} // AdempiereDatabase
|
} // AdempiereDatabase
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1109,5 +1109,13 @@ public class DB_Oracle implements AdempiereDatabase
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String addPagingSQL(String sql, int start, int end) {
|
||||||
|
String newSql = "SELECT * FROM (" + sql + ") WHERE ROWNUM BETWEEN " + start + " AND " + end;
|
||||||
|
return newSql;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPagingSupported() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
} // DB_Oracle
|
} // DB_Oracle
|
||||||
|
|
|
||||||
|
|
@ -85,16 +85,17 @@ public class DB_PostgreSQL implements AdempiereDatabase
|
||||||
private String m_dbName = null;
|
private String m_dbName = null;
|
||||||
|
|
||||||
private String m_userName = null;
|
private String m_userName = null;
|
||||||
|
|
||||||
/** Connection String */
|
/** Connection String */
|
||||||
private String m_connectionURL;
|
private String m_connectionURL;
|
||||||
|
|
||||||
private boolean m_supportAlias = false;
|
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger.getCLogger (DB_PostgreSQL.class);
|
private static CLogger log = CLogger.getCLogger (DB_PostgreSQL.class);
|
||||||
|
|
||||||
private static int m_maxbusyconnections = 0;
|
private static int m_maxbusyconnections = 0;
|
||||||
|
|
||||||
|
public static final String NATIVE_MARKER = "NATIVE_"+Database.DB_POSTGRESQL+"_KEYWORK";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Database Name
|
* Get Database Name
|
||||||
* @return database short name
|
* @return database short name
|
||||||
|
|
@ -791,21 +792,19 @@ public class DB_PostgreSQL implements AdempiereDatabase
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implemented using the limit and offset feature. use 1 base index for start and end parameter
|
||||||
/*
|
* @param sql
|
||||||
public boolean getSupportAlias()
|
* @param start
|
||||||
{
|
* @param end
|
||||||
|
*/
|
||||||
if (s_driver == null)
|
public String addPagingSQL(String sql, int start, int end) {
|
||||||
{
|
String newSql = sql + " " + NATIVE_MARKER + "LIMIT " + ( end - start + 1 )
|
||||||
s_driver = new org.postgresql.Driver();
|
+ " " + NATIVE_MARKER + "OFFSET " + (start - 1);
|
||||||
if(s_driver.getVersion().indexOf("PostgreSQL 8.2") != -1)
|
return newSql;
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
public boolean isPagingSupported() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
} // DB_PostgreSQL
|
} // DB_PostgreSQL
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import java.util.Vector;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.compiere.db.DB_PostgreSQL;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
|
@ -107,6 +108,7 @@ public class Convert_PostgreSQL extends Convert_SQL92 {
|
||||||
|
|
||||||
String statement = replaceQuotedStrings(sqlStatement, retVars);
|
String statement = replaceQuotedStrings(sqlStatement, retVars);
|
||||||
statement = convertWithConvertMap(statement);
|
statement = convertWithConvertMap(statement);
|
||||||
|
statement = statement.replace(DB_PostgreSQL.NATIVE_MARKER, "");
|
||||||
|
|
||||||
String cmpString = statement.toUpperCase();
|
String cmpString = statement.toUpperCase();
|
||||||
boolean isCreate = cmpString.startsWith("CREATE ");
|
boolean isCreate = cmpString.startsWith("CREATE ");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue